diff --git a/CHANGELOG.md b/CHANGELOG.md index 1653d3f4..e394b34c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ The format is loosely inspired by Keep a Changelog. ### Changed +- **Web 0.15.6, VisuBot: structured programming basics, step by step:** six new beginner robot lessons (de/en), inserted by file name without renaming (the series now has 33 lessons): „Zählen und Summieren“ after do-while (counter and sum pattern, exercises „Schritte bis zur Wand“ in three worlds and Java „Spirale mit Strecke“), „Feste Werte mit final“ after the ultrasonic sensor (constants, `const`/`final`, „Wand mit Konstante“, Java „Quadrat mit Konstante“), „Nah, mittel oder weit?“ (three cases, `else if`, order of conditions; „Tempo nach Abstand“, Java „Tag oder Nacht?“), „Der größte Wert“ after colours (maximum with desk-check table, new worlds `platz-1`/`platz-2`, „Wo ist am meisten Platz?“, Java „Die Richtung merken“), „Ein Merker mit boolean“ after the light sensor („Wurde es dunkel?“, Java „Wurde geklatscht?“) and „Zustände: Was mache ich gerade?“ after stopwatch/battery (state machine, Robo-Ampel with switch, Java with String states and `.equals`). Each lesson has competencies, a game, a „Warum läuft das nicht?“ exercise, a checklist and a quiz. Glossary: Merker/flag, Zustandsautomat/state machine. - **Web 0.15.5, small lesson fixes from the second review:** the free tasks „Einheitenrechner“ (after L36) and „Würfeln mit MVC“ (after L41) get a list „Du bist fertig, wenn …“ with things you can see in the window and console. L38 „Viele Knöpfe, ein Zuhörer“: Ludwig's tip in the task „Zahlenschloss“ talked about the calculator; it now helps with the task (count wrong attempts, `setEnabled(false)`, stars with a separate `eingabe`). Steps „Profiwissen: …“ in L23, L29, L31, L36 and L37 lose the prefix (Holger: no separate Profiwissen), L39 refers to the step by name. L5 Angeberwissen no longer mentions the coffee-cup logo. de/en/pt. New test: no step title starts with „Profiwissen“. - **Web 0.15.4, lesson 1 split in two:** VisuStruct lesson 1 „Was ist ein Struktogramm?“ was very long (15 steps). It now covers algorithm, reading a structure chart, the three building blocks, „Erst die Struktur, dann der Code“, the game „Welcher Baustein?“, checklist and quiz. The new lesson 2 „PAP und Pseudocode“ (`01-weitere-darstellungen.md`) takes the flowchart part (PAP elements, exercise „Kuchen backen als PAP“, jumps/GOTO/spaghetti code, pseudocode and comparison) with its own Kompetenzen, a new game „Welche Darstellung?“ (structure chart, flowchart or pseudocode, eight rounds), checklist and quiz (de/en/pt). VisuStruct now numbers lessons like VisuBot: in file order, so the new lesson keeps file number 01 and no file is renamed (progress stays). All later lessons move up by one; „Lektion N“ in texts and `nach:` in tasks are renumbered automatically. Saved step positions in lesson 1 may point to a later step than before. New test checks the split and the renumbered references. - **Web 0.15.3, VisuBot orange like visucode.de:** the VisuBot theme in the app used #e07000 (buttons, selection, focus) and #f08a00 („Bot“ in the title bar), the visucode.de start page uses #c2410c with the gradient #ea580c → #c2410c (css/visucode.css, MARKE.md). The app now uses the same values; white text on the accent goes from 3.2 : 1 to 5.2 : 1. The command group „Fahren“ (stripe and dot) moves from the old VisuBot orange #d96a00 to #c2410c as well. diff --git a/web/lessons/de/begriffe.md b/web/lessons/de/begriffe.md index 61c1f086..83ec1c59 100644 --- a/web/lessons/de/begriffe.md +++ b/web/lessons/de/begriffe.md @@ -115,6 +115,13 @@ Eine Variable, die in einer Schleife mitzählt, meistens i. auch: Endlosschleifen Eine Schleife, deren Bedingung nie falsch wird. Sie hört nie von selbst auf. +### Merker +Eine Variable vom Typ boolean, die mit false anfängt und auf true gesetzt wird, sobald etwas passiert ist. + +### Zustandsautomat +auch: Zustandsautomaten, Zustandsvariable, Zustandsvariablen +Ein Programm, das immer in genau einem Zustand ist und nach festen Regeln in den nächsten Zustand wechselt, z. B. eine Ampel. + ### Array auch: Arrays Eine Reihe von Fächern mit einem gemeinsamen Namen und demselben Datentyp. Im Lehrplan heißt es auch Feld. diff --git a/web/lessons/de/visubot/05-zaehlen-und-summieren.md b/web/lessons/de/visubot/05-zaehlen-und-summieren.md new file mode 100644 index 00000000..13a687b2 --- /dev/null +++ b/web/lessons/de/visubot/05-zaehlen-und-summieren.md @@ -0,0 +1,154 @@ +--- +titel: Zählen und Summieren +bereich: Sensoren und Entscheidungen +kurz: Mit einer Variablen mitzählen und Werte zusammenzählen. +--- + +## Diese Kompetenzen erwerbe ich jetzt + +::: kompetenzen +- eine Zählvariable anlegen und in einer Schleife hochzählen +- in einer Schleife eine Summe bilden +- das Ergebnis nach der Schleife auf dem Bildschirm zeigen +::: + +## Mitzählen + +Wie viele Schritte fährt der mBot2 bis zur Wand? Das weißt du vorher nicht, die Welt ist jedes Mal anders. Der mBot2 soll deshalb **mitzählen**. Dafür brauchst du drei Kästen: + +1. **Vor** der Schleife: `int schritte = 0`. Am Anfang ist noch nichts gezählt. +2. **In** der Schleife: `schritte = schritte + 1`. Nach jedem Schritt eins mehr. +3. **Nach** der Schleife: das Ergebnis zeigen, zum Beispiel mit `mbot.showText("Schritte: " + schritte)`. + +Lies `schritte = schritte + 1` von rechts nach links: Nimm den alten Wert von `schritte`, zähle 1 dazu und speichere das Ergebnis wieder in `schritte`. So eine Variable heißt **Zählvariable** oder kurz Zähler. + +> Achtung: Steht `int schritte = 0` **in** der Schleife, fängt der Zähler bei jedem Durchgang wieder bei 0 an. Am Ende steht dann immer 1 da. + +::: angeberwissen +Dein Handy zählt deine Schritte genau so: Bei jedem Schritt rechnet es `schritte = schritte + 1`. Ich zähle lieber meine Grashalme. Ich bin bei 4 Millionen. +::: + +::: übung vb-schritte-welt +titel: Schritte bis zur Wand +auftrag: Baue ein Struktogramm: Der mBot2 fährt vor, solange der Abstand größer als 15 ist. Dabei zählt er seine Schritte mit. Danach zeigt er zum Beispiel **Schritte: 3** auf dem Bildschirm. Es gibt drei Welten. +welt: wand-kurz -> screen "Schritte: 3" +welt: wand-mittel -> screen "Schritte: 7" +welt: wand-lang -> screen "Schritte: 12" +braucht: whileSchleife +tipp: Der erste Kasten ist `int schritte = 0`. Danach kommt die While-Schleife mit `mbot.getDistance() > 15`. +tipp: In der Schleife stehen **fahre vor** und `schritte = schritte + 1`. Nach der Schleife steht `mbot.showText("Schritte: " + schritte)`. +lösung: vb-schritte-welt-loesung.visustruct +::: + +## Zusammenzählen + +Ein Zähler wächst immer um 1. Eine **Summe** wächst um verschiedene Werte. Der mBot2 fährt eine Spirale: erst 10 cm, dann 20, dann 30, dann 40. Wie weit ist er insgesamt gefahren? + +| Durchgang | `seite` | `gesamt` danach | +|---|---|---| +| vorher | 10 | 0 | +| 1 | 10 | 0 + 10 = 10 | +| 2 | 20 | 10 + 20 = 30 | +| 3 | 30 | 30 + 30 = 60 | +| 4 | 40 | 60 + 40 = 100 | + +Das Muster ist dasselbe wie beim Zählen. Nur steht statt der 1 jetzt der Wert, der dazukommt: `gesamt = gesamt + seite`. + +## Jetzt in Java: Spirale mit Strecke + +::: übung vb-java-spirale-strecke +titel: Spirale mit Strecke +code: java +auftrag: Schreibe in Java: Lege `int seite = 10` und `int gesamt = 0` an. Fahre viermal: `seite` cm vor, rechts drehen, `seite` zu `gesamt` dazuzählen, `seite` um 10 größer machen. Zeige danach **Strecke: 100 cm** auf dem Bildschirm. +fahrt: forward 10, turnRight, forward 20, turnRight, forward 30, turnRight, forward 40, turnRight +befehle: showText "Strecke: 100 cm" +braucht: forSchleife +tipp: In der For-Schleife stehen vier Zeilen: `mbot.forward(seite);`, `mbot.turnRight();`, `gesamt = gesamt + seite;` und `seite = seite + 10;`. +tipp: Nach der Schleife steht `mbot.showText("Strecke: " + gesamt + " cm");`. +lösung: vb-java-spirale-strecke-loesung.visustruct +::: + +::: übung vb-fehler-05-zaehlen-und-summieren +titel: Warum läuft das nicht? +code: java +auftrag: Ludwig hat „Spirale mit Strecke“ abgetippt, aber das Programm läuft nicht. „Im Editor öffnen“ zeigt den Code im Bereich Code. Klicke auf „Ausführen“ und lies die Fehlermeldung. Repariere den Fehler und klicke auf Prüfen. +start: vb-fehler-05-zaehlen-und-summieren-start.visustruct +fahrt: forward 10, turnRight, forward 20, turnRight, forward 30, turnRight, forward 40, turnRight +befehle: showText "Strecke: 100 cm" +tipp: Die Fehlermeldung nennt eine unbekannte Variable. Wie heißt die Variable dort, wo sie angelegt wird? Java unterscheidet Groß- und Kleinschreibung. +tipp: Richtig heißt es `gesamt = gesamt + seite`. +lösung: vb-java-spirale-strecke-loesung.visustruct +::: + +## Spiel: Was steht am Ende in der Variablen? + +::: spiel frage +titel: Spiel: Was steht am Ende in der Variablen? +intro: Ludwig hat kleine Programme geschrieben. Rechne im Kopf mit. Fünf Runden. + +runde: +frage: `int z = 0`, dann dreimal `z = z + 1`. Was ist `z`? +- 1 +- [x] 3 +- 0 +> Jeder Durchgang zählt 1 dazu: 1, 2, 3. + +runde: +frage: `int summe = 0`, dann `summe = summe + 5` und `summe = summe + 7`. Was ist `summe`? +- 7 +- [x] 12 +- 5 +> 0 + 5 = 5, dann 5 + 7 = 12. + +runde: +frage: Eine Schleife läuft viermal. In ihr stehen `int z = 0` und `z = z + 1`. Was ist `z` am Ende? +- 4 +- [x] 1 +- 0 +> Der Zähler wird in jedem Durchgang wieder auf 0 gesetzt. Er gehört vor die Schleife. + +runde: +frage: `int gesamt = 0`. Der mBot2 fährt 20, 20 und 30 cm und zählt jedes Mal dazu. Was ist `gesamt`? +- 30 +- 20 +- [x] 70 +> 20 + 20 + 30 = 70. + +runde: +frage: `int schritte = 10`, dann zweimal `schritte = schritte + 1`. Was ist `schritte`? +- 2 +- [x] 12 +- 11 +> Der Zähler fängt hier bei 10 an, nicht bei 0. +::: + +## Checkliste + +Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀️ kann ich sicher. Bei ⛅ und ☂️ hilft dir **Nachlesen**. Danach kommt der Wissenstest. Er zeigt dir, ob deine Einschätzung stimmt. + +::: checkliste +- Ich kann eine Zählvariable anlegen und in einer Schleife hochzählen. → Mitzählen +- Ich kann in einer Schleife eine Summe bilden. → Zusammenzählen +- Ich kann das Ergebnis nach der Schleife auf dem Bildschirm zeigen. → Jetzt in Java: Spirale mit Strecke +::: + +## Wissenstest + +::: quiz +? Wo legst du die Zählvariable `int schritte = 0` an? +→ Mitzählen +- [x] Vor der Schleife +- [ ] In der Schleife +- [ ] Nach der Schleife +> In der Schleife würde sie bei jedem Durchgang wieder 0. +? Was macht `schritte = schritte + 1`? +→ Mitzählen +- [ ] Es vergleicht schritte mit schritte + 1. +- [x] Es nimmt den alten Wert, zählt 1 dazu und speichert das Ergebnis. +- [ ] Es setzt schritte auf 1. +? Wie zählst du die Seitenlänge `seite` zur Summe `gesamt` dazu? +→ Zusammenzählen +- [ ] `gesamt = seite` +- [ ] `seite = gesamt + seite` +- [x] `gesamt = gesamt + seite` +::: diff --git a/web/lessons/de/visubot/06-konstanten-final.md b/web/lessons/de/visubot/06-konstanten-final.md new file mode 100644 index 00000000..5f223b97 --- /dev/null +++ b/web/lessons/de/visubot/06-konstanten-final.md @@ -0,0 +1,151 @@ +--- +titel: Feste Werte mit final +bereich: Sensoren und Entscheidungen +kurz: Eine Konstante anlegen, damit eine wichtige Zahl nur an einer Stelle steht. +--- + +## Diese Kompetenzen erwerbe ich jetzt + +::: kompetenzen +- erklären, was eine Konstante ist +- eine Konstante im Struktogramm und in Java anlegen +- eine Konstante in einer Bedingung und in einem Befehl benutzen +::: + +## Eine Zahl an vielen Stellen + +Ludwig hat ein Programm für den Flur geschrieben: Der mBot2 fährt bis 20 cm vor die Wand, dreht sich um und fährt bis 20 cm vor die andere Wand. + +::: diagramm vb-l06k-ohne.visustruct +Hin und zurück. Die Zahl 20 steht an zwei Stellen. +::: + +Jetzt soll der mBot2 schon bei 30 cm anhalten. Ludwig muss jede 20 suchen und ändern. Vergisst er eine, hält der mBot2 einmal bei 30 und einmal bei 20 cm. In langen Programmen passiert so etwas schnell. + +::: angeberwissen +Profis nennen eine Zahl, die einfach so im Programm steht, eine **magische Zahl**. Magisch, weil niemand mehr weiß, was sie bedeutet. Ich mag nur magische Grashalme. +::: + +## Eine Konstante anlegen + +Besser ist eine **Konstante**. Das ist eine Variable, deren Wert nach dem Festlegen gleich bleibt. Du legst sie einmal ganz oben an und benutzt danach nur noch ihren Namen. + +| | Struktogramm | Java | +|---|---|---| +| anlegen | `const int ABSTAND = 20` | `final int ABSTAND = 20;` | +| benutzen | `mbot.getDistance() > ABSTAND` | `mbot.getDistance() > ABSTAND` | + +Im Struktogramm schreibst du `const` davor, in Java `final`. Beides heißt: Dieser Wert ändert sich nicht mehr. Namen von Konstanten schreibt man in **Großbuchstaben**, dann erkennt man sie sofort. + +::: diagramm vb-l06k-mit.visustruct +Dasselbe Programm mit der Konstanten ABSTAND. Für 30 cm änderst du nur die erste Zeile. +::: + +::: übung vb-konstante-wand +titel: Wand mit Konstante +auftrag: Lege die Konstante `ABSTAND` mit dem Wert 20 an. Der mBot2 fährt vor, solange der Abstand größer als `ABSTAND` ist. Danach spielt er einen Ton. Es gibt drei Welten. +welt: wand-kurz -> tone +welt: wand-mittel -> tone +welt: wand-lang -> tone +braucht: whileSchleife +tipp: Der erste Kasten ist eine Anweisung mit `const int ABSTAND = 20`. Darunter kommt eine While-Schleife. +tipp: Die Bedingung der Schleife ist `mbot.getDistance() > ABSTAND`. In der Schleife steht **fahre vor**, nach der Schleife **spiele Ton**. +lösung: vb-konstante-wand-loesung.visustruct +::: + +## Jetzt in Java: Quadrat mit Konstante + +Eine Konstante passt auch in einen Befehl. Mit `final int SEITE = 30;` fährt `mbot.forward(SEITE);` genau 30 cm. Soll das Quadrat größer werden, änderst du nur die eine Zeile. + +::: übung vb-java-konstante-seite +titel: Quadrat mit Konstante +code: java +auftrag: Schreibe in Java: Lege die Konstante `SEITE` mit dem Wert 30 an. Fahre dann mit einer For-Schleife ein Quadrat mit der Seitenlänge `SEITE`. +fahrt: 4 x (forward 30, turnRight) +braucht: forSchleife +tipp: Die erste Zeile ist `final int SEITE = 30;`. Danach kommt `for (int i = 0; i < 4; i++) { … }`. +tipp: In der Schleife stehen `mbot.forward(SEITE);` und `mbot.turnRight();`. +lösung: vb-java-konstante-seite-loesung.visustruct +::: + +::: übung vb-fehler-06-konstanten-final +titel: Warum läuft das nicht? +code: java +auftrag: Ludwig hat „Quadrat mit Konstante“ abgetippt, aber das Programm läuft nicht. „Im Editor öffnen“ zeigt den Code im Bereich Code. Klicke auf „Ausführen“ und lies die Fehlermeldung. Repariere den Fehler und klicke auf Prüfen. +start: vb-fehler-06-konstanten-final-start.visustruct +fahrt: 4 x (forward 30, turnRight) +tipp: Die Fehlermeldung nennt eine unbekannte Variable. Wie heißt die Konstante dort, wo sie angelegt wird? Konstanten schreibt man in Großbuchstaben. +tipp: Richtig heißt es `mbot.forward(SEITE)`. +lösung: vb-java-konstante-seite-loesung.visustruct +::: + +## Spiel: Konstante oder Variable? + +::: spiel frage +titel: Spiel: Konstante oder Variable? +intro: Ludwig sortiert Werte. Bleibt der Wert im ganzen Programm gleich, ist er eine Konstante. Ändert er sich, ist er eine Variable. Sechs Runden. +frage: Konstante oder Variable? +antworten: Konstante | Variable + +runde: +frage: Die Anzahl der Ecken eines Quadrats +richtig: Konstante +> Ein Quadrat hat immer vier Ecken. + +runde: +frage: Der Abstand, den der Ultraschallsensor gerade misst +richtig: Variable +> Fährt der mBot2, ändert sich der Abstand ständig. + +runde: +frage: Der Mindestabstand, bei dem der mBot2 immer anhalten soll +richtig: Konstante +> Du legst ihn einmal fest, zum Beispiel `final int ABSTAND = 20;`. + +runde: +frage: Die Zahl der Schritte, die der mBot2 schon gefahren ist +richtig: Variable +> Nach jedem Schritt wird sie um 1 größer. + +runde: +frage: Die Tonhöhe des Warntons, immer 440 Hz +richtig: Konstante +> Der Warnton klingt immer gleich. + +runde: +frage: Der Akkustand in Prozent +richtig: Variable +> Der Akku wird beim Fahren langsam leer. +::: + +## Checkliste + +Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀️ kann ich sicher. Bei ⛅ und ☂️ hilft dir **Nachlesen**. Danach kommt der Wissenstest. Er zeigt dir, ob deine Einschätzung stimmt. + +::: checkliste +- Ich kann erklären, was eine Konstante ist. → Eine Konstante anlegen +- Ich kann eine Konstante im Struktogramm und in Java anlegen. → Eine Konstante anlegen +- Ich kann eine Konstante in einer Bedingung und in einem Befehl benutzen. → Jetzt in Java: Quadrat mit Konstante +::: + +## Wissenstest + +::: quiz +? Was ist eine Konstante? +→ Eine Konstante anlegen +- [ ] Eine Variable, die sich in jedem Durchgang ändert +- [x] Eine Variable, deren Wert nach dem Festlegen gleich bleibt +- [ ] Ein Sensor, der immer denselben Wert misst +> Eine Konstante legst du einmal fest. Danach benutzt du nur ihren Namen. +? Wie legst du in Java die Konstante `ABSTAND` mit dem Wert 20 an? +→ Eine Konstante anlegen +- [ ] `const ABSTAND = 20;` +- [x] `final int ABSTAND = 20;` +- [ ] `int final = 20;` +> In Java steht `final` vor dem Datentyp. Im Struktogramm schreibst du `const`. +? Warum ist eine Konstante besser als die Zahl 20 an vielen Stellen? +→ Eine Konstante anlegen +- [ ] Weil das Programm dann schneller fährt +- [x] Weil du den Wert nur an einer Stelle ändern musst +- [ ] Weil der Sensor dann genauer misst +::: diff --git a/web/lessons/de/visubot/06-nah-mittel-weit.md b/web/lessons/de/visubot/06-nah-mittel-weit.md new file mode 100644 index 00000000..21152384 --- /dev/null +++ b/web/lessons/de/visubot/06-nah-mittel-weit.md @@ -0,0 +1,189 @@ +--- +titel: Nah, mittel oder weit? +bereich: Sensoren und Entscheidungen +kurz: Eine Verzweigung mit drei Fällen bauen und in Java mit else if schreiben. +--- + +## Diese Kompetenzen erwerbe ich jetzt + +::: kompetenzen +- eine Verzweigung mit drei Fällen bauen +- `else if` in Java lesen und schreiben +- die Bedingungen in der richtigen Reihenfolge prüfen +::: + +## Drei Fälle statt zwei + +Viele Autos haben eine **Einparkhilfe**. Ist die Wand weit weg, ist alles frei. Kommt sie näher, heißt es: langsam. Ist sie ganz nah: Stopp! + +Eine Verzweigung hat nur zwei Zweige, Ja und Nein. Für drei Fälle setzt du eine zweite Verzweigung in den Nein-Zweig der ersten: + +1. Ist der Abstand kleiner als 10? Dann **Stopp**. +2. Sonst: Ist der Abstand kleiner als 30? Dann **Langsam**. +3. Sonst: **Frei**. + +::: diagramm vb-l06n-einparkhilfe.visustruct +Die Einparkhilfe. Die zweite Frage wird nur gestellt, wenn die Antwort auf die erste Nein war. +::: + +Probiere es in der [Simulation](#zeige-simulation) aus: Öffne das Diagramm im Editor und stelle den Abstand auf 5, 20 und 50 cm. + +> 📘 **Mehr dazu ohne Roboter:** In VisuStruct gibt es die Lektion [„Verzweigung“](?visustruct&lektion=08-verzweigung). Sie öffnet sich in einem neuen Fenster. + +## Tempo nach Abstand im Struktogramm + +::: übung vb-tempo-abstand +titel: Tempo nach Abstand +auftrag: Baue ein Struktogramm mit drei Fällen: Ist der Abstand kleiner als 10, fährt der mBot2 5 cm zurück. Sonst: Ist der Abstand kleiner als 30, fährt er 5 cm vor. Sonst fährt er 20 cm vor. +messwerte: getDistance=5 -> backward 5 +messwerte: getDistance=20 -> forward 5 +messwerte: getDistance=50 -> forward 20 +braucht: verzweigung +tipp: Baue es wie die Einparkhilfe: eine Verzweigung mit `mbot.getDistance() < 10` und im Nein-Zweig eine zweite mit `mbot.getDistance() < 30`. +tipp: Die Befehle sind `mbot.backward(5)`, `mbot.forward(5)` und `mbot.forward(20)`. Der letzte steht im Nein-Zweig der zweiten Verzweigung. +lösung: vb-tempo-abstand-loesung.visustruct +::: + +> Beim Prüfen setzt VisuStruct den Abstand nacheinander auf 5, 20 und 50 cm. + +## Jetzt in Java: else if + +Schau in den Bereich [Code](#zeige-codelive). Die Verzweigung im Nein-Zweig sieht so aus: + +```java +if (mbot.getDistance() < 10) { + mbot.showText("Stopp"); +} else { + if (mbot.getDistance() < 30) { + mbot.showText("Langsam"); + } else { + mbot.showText("Frei"); + } +} +``` + +In Java darfst du das kürzer schreiben. Das `if` rutscht direkt hinter das `else`: + +```java +if (mbot.getDistance() < 10) { + mbot.showText("Stopp"); +} else if (mbot.getDistance() < 30) { + mbot.showText("Langsam"); +} else { + mbot.showText("Frei"); +} +``` + +Beides bedeutet genau dasselbe. Mit `else if` ist es aber besser zu lesen. Die geschweiften Klammern `{ }` schreibst du trotzdem immer. + +::: übung vb-java-tageszeit +titel: Tag oder Nacht? +code: java +auftrag: Schreibe in Java mit `else if`: Ist die Helligkeit kleiner als 20, zeigt der mBot2 **Nacht**. Sonst: Ist sie kleiner als 60, zeigt er **Dämmerung**. Sonst zeigt er **Tag**. +messwerte: getBrightness=10 -> none, screen "Nacht" +messwerte: getBrightness=40 -> none, screen "Dämmerung" +messwerte: getBrightness=80 -> none, screen "Tag" +braucht: verzweigung +tipp: Die Helligkeit liest du mit `mbot.getBrightness()`. Die erste Bedingung ist `mbot.getBrightness() < 20`. +tipp: `if (…) { mbot.showText("Nacht"); } else if (mbot.getBrightness() < 60) { mbot.showText("Dämmerung"); } else { mbot.showText("Tag"); }` +lösung: vb-java-tageszeit-loesung.visustruct +::: + +::: übung vb-fehler-06-nah-mittel-weit +titel: Warum läuft das nicht? +code: java +auftrag: Ludwig hat „Tag oder Nacht?“ abgetippt, aber das Programm läuft nicht. „Im Editor öffnen“ zeigt den Code im Bereich Code. Klicke auf „Ausführen“ und lies die Fehlermeldung. Repariere den Fehler und klicke auf Prüfen. +start: vb-fehler-06-nah-mittel-weit-start.visustruct +messwerte: getBrightness=10 -> none, screen "Nacht" +messwerte: getBrightness=40 -> none, screen "Dämmerung" +messwerte: getBrightness=80 -> none, screen "Tag" +tipp: Ein Text gehört in Anführungszeichen. Ohne sie sucht Java eine Variable mit diesem Namen. +tipp: Richtig heißt es `mbot.showText("Nacht")`. +lösung: vb-java-tageszeit-loesung.visustruct +::: + +## Auf die Reihenfolge kommt es an + +Ludwig hat die Einparkhilfe umgebaut und die Fragen getauscht: + +```java +if (mbot.getDistance() < 30) { + mbot.showText("Langsam"); +} else if (mbot.getDistance() < 10) { + mbot.showText("Stopp"); +} +``` + +Bei 5 cm zeigt sein mBot2 **Langsam** statt **Stopp**. Denn 5 ist auch kleiner als 30. Die erste Bedingung ist schon wahr, die zweite wird gar nicht mehr geprüft. **Stopp** erscheint nie. + +> Merke: Bei `<` prüfst du zuerst den kleinsten Wert, dann den nächstgrößeren. + +::: spiel frage +titel: Spiel: Was zeigt die Einparkhilfe? +intro: Ludwigs Einparkhilfe von oben: unter 10 cm **Stopp**, unter 30 cm **Langsam**, sonst **Frei**. Was zeigt sie? Sechs Runden. +frage: Was zeigt die Einparkhilfe? +antworten: Stopp | Langsam | Frei + +runde: +frage: Der Abstand ist **5 cm**. +richtig: Stopp +> 5 ist kleiner als 10. Schon die erste Frage ist wahr. + +runde: +frage: Der Abstand ist **25 cm**. +richtig: Langsam +> 25 ist nicht kleiner als 10, aber kleiner als 30. + +runde: +frage: Der Abstand ist **80 cm**. +richtig: Frei +> Beide Fragen sind falsch, also bleibt der letzte Nein-Zweig. + +runde: +frage: Der Abstand ist genau **10 cm**. +richtig: Langsam +> 10 ist nicht kleiner als 10. Die erste Frage ist falsch, die zweite wahr. + +runde: +frage: Der Abstand ist genau **30 cm**. +richtig: Frei +> 30 ist nicht kleiner als 30. Beide Fragen sind falsch. + +runde: +frage: Der Abstand ist **9 cm**. +richtig: Stopp +> 9 ist kleiner als 10. +::: + +## Checkliste + +Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀️ kann ich sicher. Bei ⛅ und ☂️ hilft dir **Nachlesen**. Danach kommt der Wissenstest. Er zeigt dir, ob deine Einschätzung stimmt. + +::: checkliste +- Ich kann eine Verzweigung mit drei Fällen bauen. → Drei Fälle statt zwei +- Ich kann `else if` in Java lesen und schreiben. → Jetzt in Java: else if +- Ich kann die Bedingungen in der richtigen Reihenfolge prüfen. → Auf die Reihenfolge kommt es an +::: + +## Wissenstest + +::: quiz +? Wie viele Verzweigungen brauchst du im Struktogramm für drei Fälle? +→ Drei Fälle statt zwei +- [ ] Eine +- [x] Zwei, die zweite im Nein-Zweig der ersten +- [ ] Drei nebeneinander +> Jede Verzweigung teilt in zwei Zweige. Die zweite teilt den Nein-Zweig noch einmal. +? Was bedeutet `else if` in Java? +→ Jetzt in Java: else if +- [x] Sonst prüfe noch eine Bedingung +- [ ] Wiederhole die Bedingung +- [ ] Prüfe beide Bedingungen gleichzeitig +> `else if` ist die kurze Schreibweise für ein `if` im `else`-Zweig. +? Ludwig prüft zuerst `< 30` und danach `< 10`. Was passiert bei 5 cm? +→ Auf die Reihenfolge kommt es an +- [ ] Es erscheint Stopp. +- [x] Es erscheint Langsam. +- [ ] Es erscheint gar nichts. +> 5 ist auch kleiner als 30. Die zweite Bedingung wird nicht mehr geprüft. +::: diff --git a/web/lessons/de/visubot/08-groesster-wert.md b/web/lessons/de/visubot/08-groesster-wert.md new file mode 100644 index 00000000..561ff125 --- /dev/null +++ b/web/lessons/de/visubot/08-groesster-wert.md @@ -0,0 +1,162 @@ +--- +titel: Der größte Wert +bereich: Sensoren und Entscheidungen +kurz: Rundum messen und sich den größten Wert merken: Wo ist am meisten Platz? +--- + +## Diese Kompetenzen erwerbe ich jetzt + +::: kompetenzen +- mit einer Variablen den bisher größten Wert merken +- in einer Schleife jeden neuen Messwert mit dem bisher größten vergleichen +- mit dem mBot2 herausfinden, in welcher Richtung am meisten Platz ist +::: + +## Den Rekord merken + +Beim Weitsprung gibt es eine Tafel mit dem **Rekord**. Nach jedem Sprung schaut die Schiedsrichterin: Ist der neue Sprung weiter als der Rekord? Dann kommt er an die Tafel. Sonst bleibt der alte Rekord stehen. + +Genau so findet ein Programm den größten Wert. Die Tafel ist eine Variable `max`: + +1. **Vor** der Schleife: `int max = 0`. Noch steht nichts an der Tafel. +2. **In** der Schleife: Ist der neue Wert größer als `max`? Dann `max = wert`. +3. **Nach** der Schleife steht in `max` der größte Wert. + +Der mBot2 dreht sich viermal und misst jedes Mal den Abstand. So sieht das im Schreibtischtest aus: + +| Richtung | gemessen | größer als `max`? | `max` danach | +|---|---|---|---| +| vorher | | | 0 | +| vorn | 16 | ja | 16 | +| rechts | 36 | ja | 36 | +| hinten | 6 | nein | 36 | +| links | 26 | nein | 36 | + +> Wichtig: Die Verzweigung hat nur einen Ja-Zweig. Ist der Wert nicht größer, passiert nichts. Der alte Rekord bleibt. + +## Wo ist am meisten Platz? + +::: übung vb-meister-platz +titel: Wo ist am meisten Platz? +auftrag: Baue ein Struktogramm: Lege `int max = 0` an. Der mBot2 misst viermal den Abstand und dreht sich danach jeweils nach rechts. Ist ein Abstand größer als `max`, merkt er ihn sich in `max`. Zum Schluss zeigt er zum Beispiel **Am weitesten: 36 cm**. Es gibt zwei Welten. +welt: platz-1 -> screen "Am weitesten: 36 cm" +welt: platz-2 -> screen "Am weitesten: 46 cm" +braucht: forSchleife, verzweigung +tipp: Die For-Schleife läuft viermal. In ihr stehen drei Kästen: `int abstand = mbot.getDistance()`, eine Verzweigung und **drehe rechts**. +tipp: Die Verzweigung prüft `abstand > max`. Im Ja-Zweig steht `max = abstand`, der Nein-Zweig bleibt leer. Nach der Schleife: `mbot.showText("Am weitesten: " + max + " cm")`. +lösung: vb-meister-platz-loesung.visustruct +::: + +::: angeberwissen +Viele Saugroboter haben oben einen kleinen Turm mit einem Laser. Er dreht sich und misst ringsum die Abstände. So zeichnet der Roboter eine Karte der Wohnung. Bei mir zu Hause misst niemand. Ich fresse mir einfach den Weg frei. +::: + +## Jetzt in Java: Die Richtung merken + +Jetzt weiß der mBot2, **wie viel** Platz es höchstens gibt. Aber **wo**? Dafür merkt er sich in einer zweiten Variablen auch die Richtung. Die Zählvariable `i` sagt dir, die wievielte Messung es war: 0 ist vorn, 1 ist rechts, 2 ist hinten und 3 ist links. + +```java +if (abstand > max) { + max = abstand; + richtung = i; +} +``` + +Beide Zeilen stehen im Ja-Zweig. Nur wenn es einen neuen Rekord gibt, ändert sich auch die Richtung. + +::: übung vb-java-richtung +titel: Die Richtung merken +code: java +auftrag: Schreibe „Wo ist am meisten Platz?“ in Java. Merke dir zusätzlich in `int richtung = 0` die Nummer der Messung mit dem größten Abstand. Zeige zum Schluss zum Beispiel **Richtung: 1**. +welt: platz-1 -> screen "Richtung: 1" +welt: platz-2 -> screen "Richtung: 0" +braucht: forSchleife, verzweigung +tipp: Vor der Schleife stehen `int max = 0;` und `int richtung = 0;`. In der Schleife: `int abstand = mbot.getDistance();`, die Verzweigung und `mbot.turnRight();`. +tipp: Im Ja-Zweig stehen `max = abstand;` und `richtung = i;`. Nach der Schleife: `mbot.showText("Richtung: " + richtung);` +lösung: vb-java-richtung-loesung.visustruct +::: + +::: übung vb-fehler-08-groesster-wert +titel: Warum läuft das nicht? +code: java +auftrag: Ludwig hat „Die Richtung merken“ abgetippt, aber das Programm läuft nicht. „Im Editor öffnen“ zeigt den Code im Bereich Code. Klicke auf „Ausführen“ und lies die Fehlermeldung. Repariere den Fehler und klicke auf Prüfen. +start: vb-fehler-08-groesster-wert-start.visustruct +welt: platz-1 -> screen "Richtung: 1" +welt: platz-2 -> screen "Richtung: 0" +tipp: Die Fehlermeldung nennt eine unbekannte Variable. Wie heißt die Variable dort, wo sie angelegt wird? Java unterscheidet Groß- und Kleinschreibung. +tipp: Richtig heißt es `richtung = i`. +lösung: vb-java-richtung-loesung.visustruct +::: + +## Spiel: Neuer Rekord? + +::: spiel frage +titel: Spiel: Neuer Rekord? +intro: Der mBot2 misst nacheinander mehrere Abstände. Was steht am Ende in `max`? Fünf Runden. + +runde: +frage: Gemessen: 20, 50, 30 +- 30 +- [x] 50 +- 100 +> 50 ist der größte Wert. Die 30 danach ist kein neuer Rekord. + +runde: +frage: Gemessen: 10, 20, 30, 40 +- 10 +- [x] 40 +- 100 +> Jeder Wert ist ein neuer Rekord. Am Ende steht der letzte da. + +runde: +frage: Gemessen: 90, 10, 20, 30 +- 30 +- [x] 90 +- 10 +> Der Rekord kommt gleich am Anfang. Danach ist kein Wert größer. + +runde: +frage: Gemessen: 15, 15, 15 +- 45 +- 0 +- [x] 15 +> 15 ist nicht größer als 15. `max` bleibt 15. + +runde: +frage: Gemessen: 25, 60, 60, 5. In welcher Richtung (`i`) ist der Rekord? +- 0 +- [x] 1 +- 2 +> Bei `i = 1` kommt die 60. Die zweite 60 ist nicht **größer**, also bleibt `richtung` bei 1. +::: + +## Checkliste + +Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀️ kann ich sicher. Bei ⛅ und ☂️ hilft dir **Nachlesen**. Danach kommt der Wissenstest. Er zeigt dir, ob deine Einschätzung stimmt. + +::: checkliste +- Ich kann mit einer Variablen den bisher größten Wert merken. → Den Rekord merken +- Ich kann in einer Schleife jeden neuen Messwert mit dem bisher größten vergleichen. → Wo ist am meisten Platz? +- Ich kann mit dem mBot2 herausfinden, in welcher Richtung am meisten Platz ist. → Jetzt in Java: Die Richtung merken +::: + +## Wissenstest + +::: quiz +? Womit fängt `max` vor der Schleife an? +→ Den Rekord merken +- [x] Mit 0, weil noch nichts gemessen ist +- [ ] Mit dem größten Wert +- [ ] Mit 100 +> Jeder Abstand ist größer als 0, also wird schon der erste Messwert der Rekord. +? Was steht im Nein-Zweig der Verzweigung `abstand > max`? +→ Den Rekord merken +- [ ] `max = 0` +- [ ] `max = abstand` +- [x] Nichts, der alte Rekord bleibt. +? Wann ändert sich `richtung`? +→ Jetzt in Java: Die Richtung merken +- [ ] In jedem Durchgang +- [x] Nur wenn es einen neuen Rekord gibt +- [ ] Nur in der letzten Runde +::: diff --git a/web/lessons/de/visubot/11-merker-boolean.md b/web/lessons/de/visubot/11-merker-boolean.md new file mode 100644 index 00000000..e8c53ec6 --- /dev/null +++ b/web/lessons/de/visubot/11-merker-boolean.md @@ -0,0 +1,155 @@ +--- +titel: Ein Merker mit boolean +bereich: Sensoren und Entscheidungen +kurz: Mit einer Variablen vom Typ boolean festhalten, ob etwas passiert ist. +--- + +## Diese Kompetenzen erwerbe ich jetzt + +::: kompetenzen +- eine Variable vom Typ `boolean` anlegen +- mit einem Merker festhalten, ob etwas passiert ist +- einen Merker nach der Schleife in einer Bedingung abfragen +::: + +## Wahr oder falsch + +Eine Variable vom Typ `boolean` kennt nur zwei Werte: `true` (wahr) und `false` (falsch). Du kennst das schon von den Sensoren: `mbot.isButtonA()` liefert `true` oder `false`. Auch ein Vergleich wie `mbot.getDistance() < 10` ist am Ende `true` oder `false`. + +| Anlegen | Bedeutung | +|---|---| +| `boolean dunkel = false` | Es war noch nicht dunkel. | +| `dunkel = true` | Jetzt war es dunkel. | +| `if (dunkel)` | Ist `dunkel` wahr? | + +Bei `if (dunkel)` brauchst du kein `== true`. Die Variable ist ja selbst schon wahr oder falsch. + +## Der Merker + +Der mBot2 soll drei Sekunden lang Wache halten. Er misst immer wieder die Helligkeit. Danach soll er sagen, ob es **irgendwann** dunkel war. + +Dafür nimmst du einen **Merker**: eine `boolean`-Variable, die mit `false` anfängt. Wird es dunkel, setzt du sie auf `true`. Danach setzt sie niemand mehr zurück. Nach der Schleife weißt du also: War es auch nur ein einziges Mal dunkel? + +::: übung vb-wurde-es-dunkel +titel: Wurde es dunkel? +auftrag: Baue ein Struktogramm: Lege `boolean dunkel = false` an. Prüfe in einer For-Schleife 30-mal: Ist die Helligkeit kleiner als 20, wird `dunkel` wahr. Warte in jedem Durchgang 100 ms. Zeige danach **Es war dunkel** oder **Immer hell**. +messwerte: getBrightness=80/10/80 -> none, screen "Es war dunkel" +messwerte: getBrightness=80 -> none, screen "Immer hell" +braucht: forSchleife, verzweigung +tipp: In der Schleife steht eine Verzweigung mit `mbot.getBrightness() < 20`. Im Ja-Zweig steht `dunkel = true`, der Nein-Zweig bleibt leer. Danach kommt `mbot.pause(100)`. +tipp: Nach der Schleife kommt eine zweite Verzweigung mit der Bedingung `dunkel`. Ja: `mbot.showText("Es war dunkel")`, Nein: `mbot.showText("Immer hell")`. +lösung: vb-wurde-es-dunkel-loesung.visustruct +::: + +> Beim Prüfen wird es in der Mitte der Wache kurz dunkel und dann wieder hell. Zeigt dein mBot2 trotzdem **Es war dunkel**? + +## Jetzt in Java: Wurde geklatscht? + +In Java sieht der Merker so aus: + +```java +boolean laut = false; +for (int i = 0; i < 30; i++) { + if (mbot.getLoudness() > 60) { + laut = true; + } + mbot.pause(100); +} +``` + +`true` und `false` schreibst du in Java immer klein. + +::: übung vb-java-klatsch-merker +titel: Wurde geklatscht? +code: java +auftrag: Schreibe in Java: Der mBot2 hört drei Sekunden lang zu (30-mal mit 100 ms Pause). Ist die Lautstärke einmal größer als 60, merkt er sich das in `boolean laut`. Danach zeigt er **Geklatscht!** oder **Alles still**. +messwerte: getLoudness=0/90/0 -> none, screen "Geklatscht!" +messwerte: getLoudness=0 -> none, screen "Alles still" +braucht: forSchleife, verzweigung +tipp: Nimm den Code oben und schreibe danach `if (laut) { … } else { … }`. +tipp: In die Zweige kommen `mbot.showText("Geklatscht!");` und `mbot.showText("Alles still");`. +lösung: vb-java-klatsch-merker-loesung.visustruct +::: + +::: übung vb-fehler-11-merker-boolean +titel: Warum läuft das nicht? +code: java +auftrag: Ludwig hat „Wurde geklatscht?“ abgetippt, aber das Programm läuft nicht. „Im Editor öffnen“ zeigt den Code im Bereich Code. Klicke auf „Ausführen“ und lies die Fehlermeldung. Repariere den Fehler und klicke auf Prüfen. +start: vb-fehler-11-merker-boolean-start.visustruct +messwerte: getLoudness=0/90/0 -> none, screen "Geklatscht!" +messwerte: getLoudness=0 -> none, screen "Alles still" +tipp: Die Fehlermeldung nennt eine unbekannte Variable. Wie schreibt man wahr und falsch in Java? Java unterscheidet Groß- und Kleinschreibung. +tipp: Richtig heißt es `laut = true`. +lösung: vb-java-klatsch-merker-loesung.visustruct +::: + +## Spiel: true oder false? + +::: spiel frage +titel: Spiel: true oder false? +intro: Ludwig fragt, was in der Bedingung herauskommt. Sechs Runden. +frage: Ist es true oder false? +antworten: true | false + +runde: +frage: `mbot.getDistance() < 10`, der Abstand ist 25 cm. +richtig: false +> 25 ist nicht kleiner als 10. + +runde: +frage: `mbot.isButtonA()`, und du drückst gerade Taste A. +richtig: true +> Der Sensor meldet: gedrückt. + +runde: +frage: `boolean dunkel = false`. In der Schleife wird es nie dunkel. Was ist `dunkel` danach? +richtig: false +> Niemand hat den Merker auf `true` gesetzt. + +runde: +frage: `boolean dunkel = false`. In der Schleife wird es einmal dunkel, danach wieder hell. Was ist `dunkel` danach? +richtig: true +> Ein Merker bleibt `true`, wenn er einmal gesetzt wurde. + +runde: +frage: `mbot.getBrightness() > 50`, die Helligkeit ist 50. +richtig: false +> 50 ist nicht größer als 50. + +runde: +frage: `!mbot.isButtonA()`, und du drückst Taste A nicht. +richtig: true +> Taste A ist nicht gedrückt, also `false`. Das `!` dreht es um: `true`. +::: + +## Checkliste + +Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀️ kann ich sicher. Bei ⛅ und ☂️ hilft dir **Nachlesen**. Danach kommt der Wissenstest. Er zeigt dir, ob deine Einschätzung stimmt. + +::: checkliste +- Ich kann eine Variable vom Typ `boolean` anlegen. → Wahr oder falsch +- Ich kann mit einem Merker festhalten, ob etwas passiert ist. → Der Merker +- Ich kann einen Merker nach der Schleife in einer Bedingung abfragen. → Jetzt in Java: Wurde geklatscht? +::: + +## Wissenstest + +::: quiz +? Welche Werte kann eine Variable vom Typ `boolean` haben? +→ Wahr oder falsch +- [ ] Jede ganze Zahl +- [x] Nur `true` und `false` +- [ ] Nur 0 und 1 +? Womit fängt ein Merker an? +→ Der Merker +- [x] Mit `false`, weil noch nichts passiert ist +- [ ] Mit `true` +- [ ] Mit dem ersten Messwert +> Erst wenn das Ereignis passiert, wird er `true`. +? Wie fragst du in Java ab, ob der Merker `laut` wahr ist? +→ Jetzt in Java: Wurde geklatscht? +- [x] `if (laut)` +- [ ] `if (laut = true)` +- [ ] `if laut` +> `laut` ist selbst schon wahr oder falsch. Ein einzelnes `=` wäre eine Zuweisung. +::: diff --git a/web/lessons/de/visubot/21-zustaende.md b/web/lessons/de/visubot/21-zustaende.md new file mode 100644 index 00000000..2cfa993f --- /dev/null +++ b/web/lessons/de/visubot/21-zustaende.md @@ -0,0 +1,160 @@ +--- +titel: Zustände: Was mache ich gerade? +bereich: Motoren und Methoden +kurz: Mit einer Zustandsvariablen und einer Fallauswahl eine Robo-Ampel weiterschalten. +--- + +## Diese Kompetenzen erwerbe ich jetzt + +::: kompetenzen +- erklären, was ein Zustand ist +- mit einer Fallauswahl je nach Zustand handeln und in den nächsten Zustand wechseln +- Zustände in Java mit Namen und `.equals` unterscheiden +::: + +## Was ist ein Zustand? + +Eine Ampel ist immer in genau einem **Zustand**: rot, grün oder gelb. In jedem Zustand weiß sie zwei Dinge: Was zeige ich? Und was kommt danach? + +Unsere Robo-Ampel hat drei Zustände. Jeder bekommt eine Nummer: + +| Zustand | LEDs | danach | +|---|---|---| +| 0 | rot | 1 | +| 1 | grün | 2 | +| 2 | gelb | 0 | + +Den aktuellen Zustand speicherst du in einer Variablen: `int zustand = 0`. So eine Variable heißt **Zustandsvariable**. Ein Programm, das so von Zustand zu Zustand springt, heißt **Zustandsautomat**. + +> Eine echte Ampel in Deutschland hat vier Zustände: rot, rot-gelb, grün, gelb. Unsere Robo-Ampel lässt rot-gelb weg. + +::: angeberwissen +Auch ein Saugroboter ist ein Zustandsautomat: saugen, ausweichen, zur Ladestation fahren. Ich habe nur zwei Zustände: fressen und schlafen. +::: + +## Die Robo-Ampel im Struktogramm + +Die Fallauswahl passt perfekt: Für jeden Zustand gibt es einen Fall. In jedem Fall stehen zwei Kästen: Was tue ich? Und welcher Zustand kommt als Nächstes? + +::: übung vb-ampel-zustand +titel: Robo-Ampel +auftrag: Baue ein Struktogramm: Lege `int zustand = 0` an. Eine For-Schleife läuft sechsmal. In ihr steht eine Fallauswahl über `zustand`. Fall 0: LEDs rot, `zustand = 1`. Fall 1: LEDs grün, `zustand = 2`. Sonst: LEDs gelb, `zustand = 0`. Nach der Fallauswahl wartet der mBot2 eine Sekunde. +befehle: 2 x (setLed 255 0 0, pause 1000, setLed 0 255 0, pause 1000, setLed 255 200 0, pause 1000) +braucht: forSchleife, fallauswahl +tipp: Die Fallauswahl findest du bei den Elementen. Schreib `zustand` hinein. Die Fälle heißen 0, 1 und sonst (default). +tipp: Die Farben sind `mbot.setLed(255, 0, 0)` für rot, `mbot.setLed(0, 255, 0)` für grün und `mbot.setLed(255, 200, 0)` für gelb. Unter der Fallauswahl, noch in der Schleife, steht `mbot.pause(1000)`. +lösung: vb-ampel-zustand-loesung.visustruct +::: + +> 📘 **Mehr dazu ohne Roboter:** In VisuStruct gibt es die Lektion [„Fallauswahl“](?visustruct&lektion=10-fallauswahl). Sie öffnet sich in einem neuen Fenster. + +## Jetzt in Java: Zustände mit Namen + +Nummern sind schnell vergessen. Was war noch mal Zustand 2? Lesbarer sind Namen. Dann ist der Zustand ein Text: + +```java +String zustand = "rot"; +... +if (zustand.equals("rot")) { + mbot.setLed(255, 0, 0); + zustand = "grün"; +} else if (zustand.equals("grün")) { + ... +``` + +Texte vergleichst du in Java mit `.equals("…")`, nicht mit `==`. + +::: übung vb-java-ampel-text +titel: Ampel mit Namen +code: java +auftrag: Schreibe die Robo-Ampel in Java mit `String zustand = "rot";`. Prüfe mit `if` und `else if`, in welchem Zustand die Ampel ist: rot, dann grün, dann gelb, dann wieder rot. Die Schleife läuft sechsmal, nach jedem Durchgang 1 Sekunde Pause. +befehle: 2 x (setLed 255 0 0, pause 1000, setLed 0 255 0, pause 1000, setLed 255 200 0, pause 1000) +braucht: forSchleife, verzweigung +tipp: In der Schleife: `if (zustand.equals("rot")) { … } else if (zustand.equals("grün")) { … } else { … }` und danach `mbot.pause(1000);`. +tipp: Im Fall rot stehen `mbot.setLed(255, 0, 0);` und `zustand = "grün";`. Grün schaltet auf `"gelb"`, gelb wieder auf `"rot"`. +lösung: vb-java-ampel-text-loesung.visustruct +::: + +::: übung vb-fehler-21-zustaende +titel: Warum läuft das nicht? +code: java +auftrag: Ludwig hat „Ampel mit Namen“ abgetippt, aber das Programm läuft nicht. „Im Editor öffnen“ zeigt den Code im Bereich Code. Klicke auf „Ausführen“ und lies die Fehlermeldung. Repariere den Fehler und klicke auf Prüfen. +start: vb-fehler-21-zustaende-start.visustruct +befehle: 2 x (setLed 255 0 0, pause 1000, setLed 0 255 0, pause 1000, setLed 255 200 0, pause 1000) +tipp: Ein Text gehört in Anführungszeichen. Ohne sie sucht Java eine Variable mit diesem Namen. +tipp: Richtig heißt es `zustand = "grün"`. +lösung: vb-java-ampel-text-loesung.visustruct +::: + +## Zustände beim Fahren + +Mit Zuständen kann der mBot2 auch fahren. Im Zustand **fahren** fährt er vor. Sieht er eine Wand, wechselt er in den Zustand **drehen**. Dort dreht er sich einmal und wechselt zurück zu **fahren**. + +::: diagramm vb-l21z-ausweichen.visustruct +Fahren und Ausweichen mit zwei Zuständen. Öffne das Diagramm im Editor und probiere es in einer Welt aus. +::: + +## Spiel: Welcher Zustand kommt jetzt? + +::: spiel frage +titel: Spiel: Welcher Zustand kommt jetzt? +intro: Die Robo-Ampel schaltet: 0 rot → 1 grün → 2 gelb → 0 rot. Welcher Zustand kommt als Nächstes? Fünf Runden. +frage: Welcher Zustand kommt danach? +antworten: 0 | 1 | 2 + +runde: +frage: Die Ampel ist gerade in Zustand **0** (rot). +richtig: 1 +> Nach rot kommt grün. + +runde: +frage: Die Ampel ist gerade in Zustand **2** (gelb). +richtig: 0 +> Nach gelb geht es wieder von vorn los. + +runde: +frage: Die Ampel ist gerade in Zustand **1** (grün). +richtig: 2 +> Nach grün kommt gelb. + +runde: +frage: Die Ampel startet in Zustand 0 und schaltet **zweimal** weiter. +richtig: 2 +> 0 → 1 → 2. + +runde: +frage: Die Ampel startet in Zustand 0 und schaltet **dreimal** weiter. +richtig: 0 +> 0 → 1 → 2 → 0. Nach drei Schritten ist sie wieder am Anfang. +::: + +## Checkliste + +Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀️ kann ich sicher. Bei ⛅ und ☂️ hilft dir **Nachlesen**. Danach kommt der Wissenstest. Er zeigt dir, ob deine Einschätzung stimmt. + +::: checkliste +- Ich kann erklären, was ein Zustand ist. → Was ist ein Zustand? +- Ich kann mit einer Fallauswahl je nach Zustand handeln und in den nächsten Zustand wechseln. → Die Robo-Ampel im Struktogramm +- Ich kann Zustände in Java mit Namen und `.equals` unterscheiden. → Jetzt in Java: Zustände mit Namen +::: + +## Wissenstest + +::: quiz +? Was speichert eine Zustandsvariable? +→ Was ist ein Zustand? +- [ ] Wie oft die Schleife gelaufen ist +- [x] Was das Programm gerade macht, zum Beispiel rot oder grün +- [ ] Den größten Messwert +? Was steht in jedem Fall der Fallauswahl? +→ Die Robo-Ampel im Struktogramm +- [x] Was zu tun ist und welcher Zustand als Nächstes kommt +- [ ] Nur eine Pause +- [ ] Eine neue Schleife +? Wie prüfst du in Java, ob `zustand` den Text `"rot"` enthält? +→ Jetzt in Java: Zustände mit Namen +- [ ] `zustand == rot` +- [x] `zustand.equals("rot")` +- [ ] `zustand = "rot"` +> Texte vergleichst du mit `.equals`. Ein einzelnes `=` würde `"rot"` zuweisen. +::: diff --git a/web/lessons/diagramme/en/vb-ampel-zustand-loesung.visustruct b/web/lessons/diagramme/en/vb-ampel-zustand-loesung.visustruct new file mode 100644 index 00000000..3512436d --- /dev/null +++ b/web/lessons/diagramme/en/vb-ampel-zustand-loesung.visustruct @@ -0,0 +1,43 @@ + + + + 105;110;116;32;115;116;97;116;101;32;61;32;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;54; + 105;43;43; + + + 115;116;97;116;101; + + + 109;98;111;116;46;115;101;116;76;101;100;40;50;53;53;44;32;48;44;32;48;41; + + + 115;116;97;116;101;32;61;32;49; + + + + + 109;98;111;116;46;115;101;116;76;101;100;40;48;44;32;50;53;53;44;32;48;41; + + + 115;116;97;116;101;32;61;32;50; + + + + + 109;98;111;116;46;115;101;116;76;101;100;40;50;53;53;44;32;50;48;48;44;32;48;41; + + + 115;116;97;116;101;32;61;32;48; + + + + + 109;98;111;116;46;112;97;117;115;101;40;49;48;48;48;41; + + + + diff --git a/web/lessons/diagramme/en/vb-fehler-05-zaehlen-und-summieren-start.visustruct b/web/lessons/diagramme/en/vb-fehler-05-zaehlen-und-summieren-start.visustruct new file mode 100644 index 00000000..5469aca6 --- /dev/null +++ b/web/lessons/diagramme/en/vb-fehler-05-zaehlen-und-summieren-start.visustruct @@ -0,0 +1,31 @@ + + + + 105;110;116;32;115;105;100;101;32;61;32;49;48; + + + 105;110;116;32;116;111;116;97;108;32;61;32;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;52; + 105;43;43; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;115;105;100;101;41; + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + 116;111;116;97;108;32;61;32;84;111;116;97;108;32;43;32;115;105;100;101; + + + 115;105;100;101;32;61;32;115;105;100;101;32;43;32;49;48; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;68;105;115;116;97;110;99;101;58;32;34;32;43;32;116;111;116;97;108;32;43;32;34;32;99;109;34;41; + + diff --git a/web/lessons/diagramme/en/vb-fehler-06-konstanten-final-start.visustruct b/web/lessons/diagramme/en/vb-fehler-06-konstanten-final-start.visustruct new file mode 100644 index 00000000..e8778244 --- /dev/null +++ b/web/lessons/diagramme/en/vb-fehler-06-konstanten-final-start.visustruct @@ -0,0 +1,19 @@ + + + + 99;111;110;115;116;32;105;110;116;32;83;73;68;69;32;61;32;51;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;52; + 105;43;43; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;115;105;100;101;41; + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + + diff --git a/web/lessons/diagramme/en/vb-fehler-06-nah-mittel-weit-start.visustruct b/web/lessons/diagramme/en/vb-fehler-06-nah-mittel-weit-start.visustruct new file mode 100644 index 00000000..da7d550f --- /dev/null +++ b/web/lessons/diagramme/en/vb-fehler-06-nah-mittel-weit-start.visustruct @@ -0,0 +1,26 @@ + + + + 109;98;111;116;46;103;101;116;66;114;105;103;104;116;110;101;115;115;40;41;32;60;32;50;48; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;78;105;103;104;116;41; + + + + + 109;98;111;116;46;103;101;116;66;114;105;103;104;116;110;101;115;115;40;41;32;60;32;54;48; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;68;117;115;107;34;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;68;97;121;34;41; + + + + + + diff --git a/web/lessons/diagramme/en/vb-fehler-08-groesster-wert-start.visustruct b/web/lessons/diagramme/en/vb-fehler-08-groesster-wert-start.visustruct new file mode 100644 index 00000000..d795bd53 --- /dev/null +++ b/web/lessons/diagramme/en/vb-fehler-08-groesster-wert-start.visustruct @@ -0,0 +1,41 @@ + + + + 105;110;116;32;109;97;120;32;61;32;48; + + + 105;110;116;32;100;105;114;101;99;116;105;111;110;32;61;32;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;52; + 105;43;43; + + + 105;110;116;32;100;105;115;116;97;110;99;101;32;61;32;109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41; + + + 100;105;115;116;97;110;99;101;32;62;32;109;97;120; + + + 109;97;120;32;61;32;100;105;115;116;97;110;99;101; + + + 100;105;114;101;99;116;105;111;110;32;61;32;73; + + + + + 248; + + + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;68;105;114;101;99;116;105;111;110;58;32;34;32;43;32;100;105;114;101;99;116;105;111;110;41; + + diff --git a/web/lessons/diagramme/en/vb-fehler-11-merker-boolean-start.visustruct b/web/lessons/diagramme/en/vb-fehler-11-merker-boolean-start.visustruct new file mode 100644 index 00000000..f1b27d79 --- /dev/null +++ b/web/lessons/diagramme/en/vb-fehler-11-merker-boolean-start.visustruct @@ -0,0 +1,42 @@ + + + + 98;111;111;108;101;97;110;32;108;111;117;100;32;61;32;102;97;108;115;101; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;51;48; + 105;43;43; + + + 109;98;111;116;46;103;101;116;76;111;117;100;110;101;115;115;40;41;32;62;32;54;48; + + + 108;111;117;100;32;61;32;84;114;117;101; + + + + + 248; + + + + + 109;98;111;116;46;112;97;117;115;101;40;49;48;48;41; + + + + + 108;111;117;100; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;67;108;97;112;33;34;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;65;108;108;32;113;117;105;101;116;34;41; + + + + diff --git a/web/lessons/diagramme/en/vb-fehler-21-zustaende-start.visustruct b/web/lessons/diagramme/en/vb-fehler-21-zustaende-start.visustruct new file mode 100644 index 00000000..77445908 --- /dev/null +++ b/web/lessons/diagramme/en/vb-fehler-21-zustaende-start.visustruct @@ -0,0 +1,48 @@ + + + + 83;116;114;105;110;103;32;115;116;97;116;101;32;61;32;34;114;101;100;34; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;54; + 105;43;43; + + + 115;116;97;116;101;46;101;113;117;97;108;115;40;34;114;101;100;34;41; + + + 109;98;111;116;46;115;101;116;76;101;100;40;50;53;53;44;32;48;44;32;48;41; + + + 115;116;97;116;101;32;61;32;103;114;101;101;110; + + + + + 115;116;97;116;101;46;101;113;117;97;108;115;40;34;103;114;101;101;110;34;41; + + + 109;98;111;116;46;115;101;116;76;101;100;40;48;44;32;50;53;53;44;32;48;41; + + + 115;116;97;116;101;32;61;32;34;121;101;108;108;111;119;34; + + + + + 109;98;111;116;46;115;101;116;76;101;100;40;50;53;53;44;32;50;48;48;44;32;48;41; + + + 115;116;97;116;101;32;61;32;34;114;101;100;34; + + + + + + + 109;98;111;116;46;112;97;117;115;101;40;49;48;48;48;41; + + + + diff --git a/web/lessons/diagramme/en/vb-java-ampel-text-loesung.visustruct b/web/lessons/diagramme/en/vb-java-ampel-text-loesung.visustruct new file mode 100644 index 00000000..6eb4839c --- /dev/null +++ b/web/lessons/diagramme/en/vb-java-ampel-text-loesung.visustruct @@ -0,0 +1,48 @@ + + + + 83;116;114;105;110;103;32;115;116;97;116;101;32;61;32;34;114;101;100;34; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;54; + 105;43;43; + + + 115;116;97;116;101;46;101;113;117;97;108;115;40;34;114;101;100;34;41; + + + 109;98;111;116;46;115;101;116;76;101;100;40;50;53;53;44;32;48;44;32;48;41; + + + 115;116;97;116;101;32;61;32;34;103;114;101;101;110;34; + + + + + 115;116;97;116;101;46;101;113;117;97;108;115;40;34;103;114;101;101;110;34;41; + + + 109;98;111;116;46;115;101;116;76;101;100;40;48;44;32;50;53;53;44;32;48;41; + + + 115;116;97;116;101;32;61;32;34;121;101;108;108;111;119;34; + + + + + 109;98;111;116;46;115;101;116;76;101;100;40;50;53;53;44;32;50;48;48;44;32;48;41; + + + 115;116;97;116;101;32;61;32;34;114;101;100;34; + + + + + + + 109;98;111;116;46;112;97;117;115;101;40;49;48;48;48;41; + + + + diff --git a/web/lessons/diagramme/en/vb-java-klatsch-merker-loesung.visustruct b/web/lessons/diagramme/en/vb-java-klatsch-merker-loesung.visustruct new file mode 100644 index 00000000..b609f3f5 --- /dev/null +++ b/web/lessons/diagramme/en/vb-java-klatsch-merker-loesung.visustruct @@ -0,0 +1,42 @@ + + + + 98;111;111;108;101;97;110;32;108;111;117;100;32;61;32;102;97;108;115;101; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;51;48; + 105;43;43; + + + 109;98;111;116;46;103;101;116;76;111;117;100;110;101;115;115;40;41;32;62;32;54;48; + + + 108;111;117;100;32;61;32;116;114;117;101; + + + + + 248; + + + + + 109;98;111;116;46;112;97;117;115;101;40;49;48;48;41; + + + + + 108;111;117;100; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;67;108;97;112;33;34;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;65;108;108;32;113;117;105;101;116;34;41; + + + + diff --git a/web/lessons/diagramme/en/vb-java-konstante-seite-loesung.visustruct b/web/lessons/diagramme/en/vb-java-konstante-seite-loesung.visustruct new file mode 100644 index 00000000..bccd6cdc --- /dev/null +++ b/web/lessons/diagramme/en/vb-java-konstante-seite-loesung.visustruct @@ -0,0 +1,19 @@ + + + + 99;111;110;115;116;32;105;110;116;32;83;73;68;69;32;61;32;51;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;52; + 105;43;43; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;83;73;68;69;41; + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + + diff --git a/web/lessons/diagramme/en/vb-java-richtung-loesung.visustruct b/web/lessons/diagramme/en/vb-java-richtung-loesung.visustruct new file mode 100644 index 00000000..567aab66 --- /dev/null +++ b/web/lessons/diagramme/en/vb-java-richtung-loesung.visustruct @@ -0,0 +1,41 @@ + + + + 105;110;116;32;109;97;120;32;61;32;48; + + + 105;110;116;32;100;105;114;101;99;116;105;111;110;32;61;32;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;52; + 105;43;43; + + + 105;110;116;32;100;105;115;116;97;110;99;101;32;61;32;109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41; + + + 100;105;115;116;97;110;99;101;32;62;32;109;97;120; + + + 109;97;120;32;61;32;100;105;115;116;97;110;99;101; + + + 100;105;114;101;99;116;105;111;110;32;61;32;105; + + + + + 248; + + + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;68;105;114;101;99;116;105;111;110;58;32;34;32;43;32;100;105;114;101;99;116;105;111;110;41; + + diff --git a/web/lessons/diagramme/en/vb-java-spirale-strecke-loesung.visustruct b/web/lessons/diagramme/en/vb-java-spirale-strecke-loesung.visustruct new file mode 100644 index 00000000..680ade9b --- /dev/null +++ b/web/lessons/diagramme/en/vb-java-spirale-strecke-loesung.visustruct @@ -0,0 +1,31 @@ + + + + 105;110;116;32;115;105;100;101;32;61;32;49;48; + + + 105;110;116;32;116;111;116;97;108;32;61;32;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;52; + 105;43;43; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;115;105;100;101;41; + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + 116;111;116;97;108;32;61;32;116;111;116;97;108;32;43;32;115;105;100;101; + + + 115;105;100;101;32;61;32;115;105;100;101;32;43;32;49;48; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;68;105;115;116;97;110;99;101;58;32;34;32;43;32;116;111;116;97;108;32;43;32;34;32;99;109;34;41; + + diff --git a/web/lessons/diagramme/en/vb-java-tageszeit-loesung.visustruct b/web/lessons/diagramme/en/vb-java-tageszeit-loesung.visustruct new file mode 100644 index 00000000..0cbbcf06 --- /dev/null +++ b/web/lessons/diagramme/en/vb-java-tageszeit-loesung.visustruct @@ -0,0 +1,26 @@ + + + + 109;98;111;116;46;103;101;116;66;114;105;103;104;116;110;101;115;115;40;41;32;60;32;50;48; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;78;105;103;104;116;34;41; + + + + + 109;98;111;116;46;103;101;116;66;114;105;103;104;116;110;101;115;115;40;41;32;60;32;54;48; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;68;117;115;107;34;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;68;97;121;34;41; + + + + + + diff --git a/web/lessons/diagramme/en/vb-konstante-wand-loesung.visustruct b/web/lessons/diagramme/en/vb-konstante-wand-loesung.visustruct new file mode 100644 index 00000000..a3fd1d85 --- /dev/null +++ b/web/lessons/diagramme/en/vb-konstante-wand-loesung.visustruct @@ -0,0 +1,17 @@ + + + + 99;111;110;115;116;32;105;110;116;32;68;73;83;84;65;78;67;69;32;61;32;50;48; + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;68;73;83;84;65;78;67;69; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;41; + + + + + 109;98;111;116;46;112;108;97;121;84;111;110;101;40;52;52;48;44;32;51;48;48;41; + + diff --git a/web/lessons/diagramme/en/vb-l06k-mit.visustruct b/web/lessons/diagramme/en/vb-l06k-mit.visustruct new file mode 100644 index 00000000..36bfc964 --- /dev/null +++ b/web/lessons/diagramme/en/vb-l06k-mit.visustruct @@ -0,0 +1,25 @@ + + + + 99;111;110;115;116;32;105;110;116;32;68;73;83;84;65;78;67;69;32;61;32;50;48; + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;68;73;83;84;65;78;67;69; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;41; + + + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;49;56;48;41; + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;68;73;83;84;65;78;67;69; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;41; + + + + diff --git a/web/lessons/diagramme/en/vb-l06k-ohne.visustruct b/web/lessons/diagramme/en/vb-l06k-ohne.visustruct new file mode 100644 index 00000000..5bd24605 --- /dev/null +++ b/web/lessons/diagramme/en/vb-l06k-ohne.visustruct @@ -0,0 +1,22 @@ + + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;50;48; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;41; + + + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;49;56;48;41; + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;50;48; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;41; + + + + diff --git a/web/lessons/diagramme/en/vb-l06n-einparkhilfe.visustruct b/web/lessons/diagramme/en/vb-l06n-einparkhilfe.visustruct new file mode 100644 index 00000000..5a30edf7 --- /dev/null +++ b/web/lessons/diagramme/en/vb-l06n-einparkhilfe.visustruct @@ -0,0 +1,26 @@ + + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;60;32;49;48; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;83;116;111;112;34;41; + + + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;60;32;51;48; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;83;108;111;119;34;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;70;114;101;101;34;41; + + + + + + diff --git a/web/lessons/diagramme/en/vb-l21z-ausweichen.visustruct b/web/lessons/diagramme/en/vb-l21z-ausweichen.visustruct new file mode 100644 index 00000000..6e91129f --- /dev/null +++ b/web/lessons/diagramme/en/vb-l21z-ausweichen.visustruct @@ -0,0 +1,39 @@ + + + + 83;116;114;105;110;103;32;115;116;97;116;101;32;61;32;34;100;114;105;118;101;34; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;50;48; + 105;43;43; + + + 115;116;97;116;101;46;101;113;117;97;108;115;40;34;100;114;105;118;101;34;41; + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;60;32;50;48; + + + 115;116;97;116;101;32;61;32;34;116;117;114;110;34; + + + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;41; + + + + + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + 115;116;97;116;101;32;61;32;34;100;114;105;118;101;34; + + + + + + diff --git a/web/lessons/diagramme/en/vb-meister-platz-loesung.visustruct b/web/lessons/diagramme/en/vb-meister-platz-loesung.visustruct new file mode 100644 index 00000000..353b2534 --- /dev/null +++ b/web/lessons/diagramme/en/vb-meister-platz-loesung.visustruct @@ -0,0 +1,35 @@ + + + + 105;110;116;32;109;97;120;32;61;32;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;52; + 105;43;43; + + + 105;110;116;32;100;105;115;116;97;110;99;101;32;61;32;109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41; + + + 100;105;115;116;97;110;99;101;32;62;32;109;97;120; + + + 109;97;120;32;61;32;100;105;115;116;97;110;99;101; + + + + + 248; + + + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;70;97;114;116;104;101;115;116;58;32;34;32;43;32;109;97;120;32;43;32;34;32;99;109;34;41; + + diff --git a/web/lessons/diagramme/en/vb-schritte-welt-loesung.visustruct b/web/lessons/diagramme/en/vb-schritte-welt-loesung.visustruct new file mode 100644 index 00000000..63fa86cd --- /dev/null +++ b/web/lessons/diagramme/en/vb-schritte-welt-loesung.visustruct @@ -0,0 +1,20 @@ + + + + 105;110;116;32;115;116;101;112;115;32;61;32;48; + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;49;53; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;41; + + + 115;116;101;112;115;32;61;32;115;116;101;112;115;32;43;32;49; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;83;116;101;112;115;58;32;34;32;43;32;115;116;101;112;115;41; + + diff --git a/web/lessons/diagramme/en/vb-tempo-abstand-loesung.visustruct b/web/lessons/diagramme/en/vb-tempo-abstand-loesung.visustruct new file mode 100644 index 00000000..5e76eef7 --- /dev/null +++ b/web/lessons/diagramme/en/vb-tempo-abstand-loesung.visustruct @@ -0,0 +1,26 @@ + + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;60;32;49;48; + + + 109;98;111;116;46;98;97;99;107;119;97;114;100;40;53;41; + + + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;60;32;51;48; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;53;41; + + + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;50;48;41; + + + + + + diff --git a/web/lessons/diagramme/en/vb-wurde-es-dunkel-loesung.visustruct b/web/lessons/diagramme/en/vb-wurde-es-dunkel-loesung.visustruct new file mode 100644 index 00000000..68ae8a5c --- /dev/null +++ b/web/lessons/diagramme/en/vb-wurde-es-dunkel-loesung.visustruct @@ -0,0 +1,42 @@ + + + + 98;111;111;108;101;97;110;32;100;97;114;107;32;61;32;102;97;108;115;101; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;51;48; + 105;43;43; + + + 109;98;111;116;46;103;101;116;66;114;105;103;104;116;110;101;115;115;40;41;32;60;32;50;48; + + + 100;97;114;107;32;61;32;116;114;117;101; + + + + + 248; + + + + + 109;98;111;116;46;112;97;117;115;101;40;49;48;48;41; + + + + + 100;97;114;107; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;73;116;32;119;97;115;32;100;97;114;107;34;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;65;108;119;97;121;115;32;98;114;105;103;104;116;34;41; + + + + diff --git a/web/lessons/diagramme/vb-ampel-zustand-loesung.visustruct b/web/lessons/diagramme/vb-ampel-zustand-loesung.visustruct new file mode 100644 index 00000000..e8c16ca2 --- /dev/null +++ b/web/lessons/diagramme/vb-ampel-zustand-loesung.visustruct @@ -0,0 +1,43 @@ + + + + 105;110;116;32;122;117;115;116;97;110;100;32;61;32;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;54; + 105;43;43; + + + 122;117;115;116;97;110;100; + + + 109;98;111;116;46;115;101;116;76;101;100;40;50;53;53;44;32;48;44;32;48;41; + + + 122;117;115;116;97;110;100;32;61;32;49; + + + + + 109;98;111;116;46;115;101;116;76;101;100;40;48;44;32;50;53;53;44;32;48;41; + + + 122;117;115;116;97;110;100;32;61;32;50; + + + + + 109;98;111;116;46;115;101;116;76;101;100;40;50;53;53;44;32;50;48;48;44;32;48;41; + + + 122;117;115;116;97;110;100;32;61;32;48; + + + + + 109;98;111;116;46;112;97;117;115;101;40;49;48;48;48;41; + + + + diff --git a/web/lessons/diagramme/vb-fehler-05-zaehlen-und-summieren-start.visustruct b/web/lessons/diagramme/vb-fehler-05-zaehlen-und-summieren-start.visustruct new file mode 100644 index 00000000..ada1a5f9 --- /dev/null +++ b/web/lessons/diagramme/vb-fehler-05-zaehlen-und-summieren-start.visustruct @@ -0,0 +1,31 @@ + + + + 105;110;116;32;115;101;105;116;101;32;61;32;49;48; + + + 105;110;116;32;103;101;115;97;109;116;32;61;32;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;52; + 105;43;43; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;115;101;105;116;101;41; + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + 103;101;115;97;109;116;32;61;32;71;101;115;97;109;116;32;43;32;115;101;105;116;101; + + + 115;101;105;116;101;32;61;32;115;101;105;116;101;32;43;32;49;48; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;83;116;114;101;99;107;101;58;32;34;32;43;32;103;101;115;97;109;116;32;43;32;34;32;99;109;34;41; + + diff --git a/web/lessons/diagramme/vb-fehler-06-konstanten-final-start.visustruct b/web/lessons/diagramme/vb-fehler-06-konstanten-final-start.visustruct new file mode 100644 index 00000000..5a1b924b --- /dev/null +++ b/web/lessons/diagramme/vb-fehler-06-konstanten-final-start.visustruct @@ -0,0 +1,19 @@ + + + + 99;111;110;115;116;32;105;110;116;32;83;69;73;84;69;32;61;32;51;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;52; + 105;43;43; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;115;101;105;116;101;41; + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + + diff --git a/web/lessons/diagramme/vb-fehler-06-nah-mittel-weit-start.visustruct b/web/lessons/diagramme/vb-fehler-06-nah-mittel-weit-start.visustruct new file mode 100644 index 00000000..5a614024 --- /dev/null +++ b/web/lessons/diagramme/vb-fehler-06-nah-mittel-weit-start.visustruct @@ -0,0 +1,26 @@ + + + + 109;98;111;116;46;103;101;116;66;114;105;103;104;116;110;101;115;115;40;41;32;60;32;50;48; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;78;97;99;104;116;41; + + + + + 109;98;111;116;46;103;101;116;66;114;105;103;104;116;110;101;115;115;40;41;32;60;32;54;48; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;68;228;109;109;101;114;117;110;103;34;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;84;97;103;34;41; + + + + + + diff --git a/web/lessons/diagramme/vb-fehler-08-groesster-wert-start.visustruct b/web/lessons/diagramme/vb-fehler-08-groesster-wert-start.visustruct new file mode 100644 index 00000000..b8b7ab73 --- /dev/null +++ b/web/lessons/diagramme/vb-fehler-08-groesster-wert-start.visustruct @@ -0,0 +1,41 @@ + + + + 105;110;116;32;109;97;120;32;61;32;48; + + + 105;110;116;32;114;105;99;104;116;117;110;103;32;61;32;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;52; + 105;43;43; + + + 105;110;116;32;97;98;115;116;97;110;100;32;61;32;109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41; + + + 97;98;115;116;97;110;100;32;62;32;109;97;120; + + + 109;97;120;32;61;32;97;98;115;116;97;110;100; + + + 114;105;99;104;116;117;110;103;32;61;32;73; + + + + + 248; + + + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;82;105;99;104;116;117;110;103;58;32;34;32;43;32;114;105;99;104;116;117;110;103;41; + + diff --git a/web/lessons/diagramme/vb-fehler-11-merker-boolean-start.visustruct b/web/lessons/diagramme/vb-fehler-11-merker-boolean-start.visustruct new file mode 100644 index 00000000..54781a09 --- /dev/null +++ b/web/lessons/diagramme/vb-fehler-11-merker-boolean-start.visustruct @@ -0,0 +1,42 @@ + + + + 98;111;111;108;101;97;110;32;108;97;117;116;32;61;32;102;97;108;115;101; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;51;48; + 105;43;43; + + + 109;98;111;116;46;103;101;116;76;111;117;100;110;101;115;115;40;41;32;62;32;54;48; + + + 108;97;117;116;32;61;32;84;114;117;101; + + + + + 248; + + + + + 109;98;111;116;46;112;97;117;115;101;40;49;48;48;41; + + + + + 108;97;117;116; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;71;101;107;108;97;116;115;99;104;116;33;34;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;65;108;108;101;115;32;115;116;105;108;108;34;41; + + + + diff --git a/web/lessons/diagramme/vb-fehler-21-zustaende-start.visustruct b/web/lessons/diagramme/vb-fehler-21-zustaende-start.visustruct new file mode 100644 index 00000000..086ea035 --- /dev/null +++ b/web/lessons/diagramme/vb-fehler-21-zustaende-start.visustruct @@ -0,0 +1,48 @@ + + + + 83;116;114;105;110;103;32;122;117;115;116;97;110;100;32;61;32;34;114;111;116;34; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;54; + 105;43;43; + + + 122;117;115;116;97;110;100;46;101;113;117;97;108;115;40;34;114;111;116;34;41; + + + 109;98;111;116;46;115;101;116;76;101;100;40;50;53;53;44;32;48;44;32;48;41; + + + 122;117;115;116;97;110;100;32;61;32;103;114;252;110; + + + + + 122;117;115;116;97;110;100;46;101;113;117;97;108;115;40;34;103;114;252;110;34;41; + + + 109;98;111;116;46;115;101;116;76;101;100;40;48;44;32;50;53;53;44;32;48;41; + + + 122;117;115;116;97;110;100;32;61;32;34;103;101;108;98;34; + + + + + 109;98;111;116;46;115;101;116;76;101;100;40;50;53;53;44;32;50;48;48;44;32;48;41; + + + 122;117;115;116;97;110;100;32;61;32;34;114;111;116;34; + + + + + + + 109;98;111;116;46;112;97;117;115;101;40;49;48;48;48;41; + + + + diff --git a/web/lessons/diagramme/vb-java-ampel-text-loesung.visustruct b/web/lessons/diagramme/vb-java-ampel-text-loesung.visustruct new file mode 100644 index 00000000..97995a57 --- /dev/null +++ b/web/lessons/diagramme/vb-java-ampel-text-loesung.visustruct @@ -0,0 +1,48 @@ + + + + 83;116;114;105;110;103;32;122;117;115;116;97;110;100;32;61;32;34;114;111;116;34; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;54; + 105;43;43; + + + 122;117;115;116;97;110;100;46;101;113;117;97;108;115;40;34;114;111;116;34;41; + + + 109;98;111;116;46;115;101;116;76;101;100;40;50;53;53;44;32;48;44;32;48;41; + + + 122;117;115;116;97;110;100;32;61;32;34;103;114;252;110;34; + + + + + 122;117;115;116;97;110;100;46;101;113;117;97;108;115;40;34;103;114;252;110;34;41; + + + 109;98;111;116;46;115;101;116;76;101;100;40;48;44;32;50;53;53;44;32;48;41; + + + 122;117;115;116;97;110;100;32;61;32;34;103;101;108;98;34; + + + + + 109;98;111;116;46;115;101;116;76;101;100;40;50;53;53;44;32;50;48;48;44;32;48;41; + + + 122;117;115;116;97;110;100;32;61;32;34;114;111;116;34; + + + + + + + 109;98;111;116;46;112;97;117;115;101;40;49;48;48;48;41; + + + + diff --git a/web/lessons/diagramme/vb-java-klatsch-merker-loesung.visustruct b/web/lessons/diagramme/vb-java-klatsch-merker-loesung.visustruct new file mode 100644 index 00000000..c378e8fa --- /dev/null +++ b/web/lessons/diagramme/vb-java-klatsch-merker-loesung.visustruct @@ -0,0 +1,42 @@ + + + + 98;111;111;108;101;97;110;32;108;97;117;116;32;61;32;102;97;108;115;101; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;51;48; + 105;43;43; + + + 109;98;111;116;46;103;101;116;76;111;117;100;110;101;115;115;40;41;32;62;32;54;48; + + + 108;97;117;116;32;61;32;116;114;117;101; + + + + + 248; + + + + + 109;98;111;116;46;112;97;117;115;101;40;49;48;48;41; + + + + + 108;97;117;116; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;71;101;107;108;97;116;115;99;104;116;33;34;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;65;108;108;101;115;32;115;116;105;108;108;34;41; + + + + diff --git a/web/lessons/diagramme/vb-java-konstante-seite-loesung.visustruct b/web/lessons/diagramme/vb-java-konstante-seite-loesung.visustruct new file mode 100644 index 00000000..4709b9a9 --- /dev/null +++ b/web/lessons/diagramme/vb-java-konstante-seite-loesung.visustruct @@ -0,0 +1,19 @@ + + + + 99;111;110;115;116;32;105;110;116;32;83;69;73;84;69;32;61;32;51;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;52; + 105;43;43; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;83;69;73;84;69;41; + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + + diff --git a/web/lessons/diagramme/vb-java-richtung-loesung.visustruct b/web/lessons/diagramme/vb-java-richtung-loesung.visustruct new file mode 100644 index 00000000..9eb32a98 --- /dev/null +++ b/web/lessons/diagramme/vb-java-richtung-loesung.visustruct @@ -0,0 +1,41 @@ + + + + 105;110;116;32;109;97;120;32;61;32;48; + + + 105;110;116;32;114;105;99;104;116;117;110;103;32;61;32;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;52; + 105;43;43; + + + 105;110;116;32;97;98;115;116;97;110;100;32;61;32;109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41; + + + 97;98;115;116;97;110;100;32;62;32;109;97;120; + + + 109;97;120;32;61;32;97;98;115;116;97;110;100; + + + 114;105;99;104;116;117;110;103;32;61;32;105; + + + + + 248; + + + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;82;105;99;104;116;117;110;103;58;32;34;32;43;32;114;105;99;104;116;117;110;103;41; + + diff --git a/web/lessons/diagramme/vb-java-spirale-strecke-loesung.visustruct b/web/lessons/diagramme/vb-java-spirale-strecke-loesung.visustruct new file mode 100644 index 00000000..9f6a7df9 --- /dev/null +++ b/web/lessons/diagramme/vb-java-spirale-strecke-loesung.visustruct @@ -0,0 +1,31 @@ + + + + 105;110;116;32;115;101;105;116;101;32;61;32;49;48; + + + 105;110;116;32;103;101;115;97;109;116;32;61;32;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;52; + 105;43;43; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;115;101;105;116;101;41; + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + 103;101;115;97;109;116;32;61;32;103;101;115;97;109;116;32;43;32;115;101;105;116;101; + + + 115;101;105;116;101;32;61;32;115;101;105;116;101;32;43;32;49;48; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;83;116;114;101;99;107;101;58;32;34;32;43;32;103;101;115;97;109;116;32;43;32;34;32;99;109;34;41; + + diff --git a/web/lessons/diagramme/vb-java-tageszeit-loesung.visustruct b/web/lessons/diagramme/vb-java-tageszeit-loesung.visustruct new file mode 100644 index 00000000..766d96d2 --- /dev/null +++ b/web/lessons/diagramme/vb-java-tageszeit-loesung.visustruct @@ -0,0 +1,26 @@ + + + + 109;98;111;116;46;103;101;116;66;114;105;103;104;116;110;101;115;115;40;41;32;60;32;50;48; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;78;97;99;104;116;34;41; + + + + + 109;98;111;116;46;103;101;116;66;114;105;103;104;116;110;101;115;115;40;41;32;60;32;54;48; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;68;228;109;109;101;114;117;110;103;34;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;84;97;103;34;41; + + + + + + diff --git a/web/lessons/diagramme/vb-konstante-wand-loesung.visustruct b/web/lessons/diagramme/vb-konstante-wand-loesung.visustruct new file mode 100644 index 00000000..cab9e6a1 --- /dev/null +++ b/web/lessons/diagramme/vb-konstante-wand-loesung.visustruct @@ -0,0 +1,17 @@ + + + + 99;111;110;115;116;32;105;110;116;32;65;66;83;84;65;78;68;32;61;32;50;48; + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;65;66;83;84;65;78;68; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;41; + + + + + 109;98;111;116;46;112;108;97;121;84;111;110;101;40;52;52;48;44;32;51;48;48;41; + + diff --git a/web/lessons/diagramme/vb-l06k-mit.visustruct b/web/lessons/diagramme/vb-l06k-mit.visustruct new file mode 100644 index 00000000..46fc7980 --- /dev/null +++ b/web/lessons/diagramme/vb-l06k-mit.visustruct @@ -0,0 +1,25 @@ + + + + 99;111;110;115;116;32;105;110;116;32;65;66;83;84;65;78;68;32;61;32;50;48; + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;65;66;83;84;65;78;68; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;41; + + + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;49;56;48;41; + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;65;66;83;84;65;78;68; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;41; + + + + diff --git a/web/lessons/diagramme/vb-l06k-ohne.visustruct b/web/lessons/diagramme/vb-l06k-ohne.visustruct new file mode 100644 index 00000000..35c22f4c --- /dev/null +++ b/web/lessons/diagramme/vb-l06k-ohne.visustruct @@ -0,0 +1,22 @@ + + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;50;48; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;41; + + + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;49;56;48;41; + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;50;48; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;41; + + + + diff --git a/web/lessons/diagramme/vb-l06n-einparkhilfe.visustruct b/web/lessons/diagramme/vb-l06n-einparkhilfe.visustruct new file mode 100644 index 00000000..f41c348f --- /dev/null +++ b/web/lessons/diagramme/vb-l06n-einparkhilfe.visustruct @@ -0,0 +1,26 @@ + + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;60;32;49;48; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;83;116;111;112;112;34;41; + + + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;60;32;51;48; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;76;97;110;103;115;97;109;34;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;70;114;101;105;34;41; + + + + + + diff --git a/web/lessons/diagramme/vb-l21z-ausweichen.visustruct b/web/lessons/diagramme/vb-l21z-ausweichen.visustruct new file mode 100644 index 00000000..eee0f567 --- /dev/null +++ b/web/lessons/diagramme/vb-l21z-ausweichen.visustruct @@ -0,0 +1,39 @@ + + + + 83;116;114;105;110;103;32;122;117;115;116;97;110;100;32;61;32;34;102;97;104;114;101;110;34; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;50;48; + 105;43;43; + + + 122;117;115;116;97;110;100;46;101;113;117;97;108;115;40;34;102;97;104;114;101;110;34;41; + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;60;32;50;48; + + + 122;117;115;116;97;110;100;32;61;32;34;100;114;101;104;101;110;34; + + + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;41; + + + + + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + 122;117;115;116;97;110;100;32;61;32;34;102;97;104;114;101;110;34; + + + + + + diff --git a/web/lessons/diagramme/vb-meister-platz-loesung.visustruct b/web/lessons/diagramme/vb-meister-platz-loesung.visustruct new file mode 100644 index 00000000..59d5aac8 --- /dev/null +++ b/web/lessons/diagramme/vb-meister-platz-loesung.visustruct @@ -0,0 +1,35 @@ + + + + 105;110;116;32;109;97;120;32;61;32;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;52; + 105;43;43; + + + 105;110;116;32;97;98;115;116;97;110;100;32;61;32;109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41; + + + 97;98;115;116;97;110;100;32;62;32;109;97;120; + + + 109;97;120;32;61;32;97;98;115;116;97;110;100; + + + + + 248; + + + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;65;109;32;119;101;105;116;101;115;116;101;110;58;32;34;32;43;32;109;97;120;32;43;32;34;32;99;109;34;41; + + diff --git a/web/lessons/diagramme/vb-schritte-welt-loesung.visustruct b/web/lessons/diagramme/vb-schritte-welt-loesung.visustruct new file mode 100644 index 00000000..a30a0ede --- /dev/null +++ b/web/lessons/diagramme/vb-schritte-welt-loesung.visustruct @@ -0,0 +1,20 @@ + + + + 105;110;116;32;115;99;104;114;105;116;116;101;32;61;32;48; + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;49;53; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;41; + + + 115;99;104;114;105;116;116;101;32;61;32;115;99;104;114;105;116;116;101;32;43;32;49; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;83;99;104;114;105;116;116;101;58;32;34;32;43;32;115;99;104;114;105;116;116;101;41; + + diff --git a/web/lessons/diagramme/vb-tempo-abstand-loesung.visustruct b/web/lessons/diagramme/vb-tempo-abstand-loesung.visustruct new file mode 100644 index 00000000..63518a55 --- /dev/null +++ b/web/lessons/diagramme/vb-tempo-abstand-loesung.visustruct @@ -0,0 +1,26 @@ + + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;60;32;49;48; + + + 109;98;111;116;46;98;97;99;107;119;97;114;100;40;53;41; + + + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;60;32;51;48; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;53;41; + + + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;50;48;41; + + + + + + diff --git a/web/lessons/diagramme/vb-wurde-es-dunkel-loesung.visustruct b/web/lessons/diagramme/vb-wurde-es-dunkel-loesung.visustruct new file mode 100644 index 00000000..910f2711 --- /dev/null +++ b/web/lessons/diagramme/vb-wurde-es-dunkel-loesung.visustruct @@ -0,0 +1,42 @@ + + + + 98;111;111;108;101;97;110;32;100;117;110;107;101;108;32;61;32;102;97;108;115;101; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;51;48; + 105;43;43; + + + 109;98;111;116;46;103;101;116;66;114;105;103;104;116;110;101;115;115;40;41;32;60;32;50;48; + + + 100;117;110;107;101;108;32;61;32;116;114;117;101; + + + + + 248; + + + + + 109;98;111;116;46;112;97;117;115;101;40;49;48;48;41; + + + + + 100;117;110;107;101;108; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;69;115;32;119;97;114;32;100;117;110;107;101;108;34;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;73;109;109;101;114;32;104;101;108;108;34;41; + + + + diff --git a/web/lessons/en/begriffe.md b/web/lessons/en/begriffe.md index 5fd10fcb..5f3cfa84 100644 --- a/web/lessons/en/begriffe.md +++ b/web/lessons/en/begriffe.md @@ -120,6 +120,14 @@ A variable that counts along in a loop, usually i. also: endless loop, endless loops, infinite loop, infinite loops A loop whose condition never becomes false. It never stops by itself. +### Flag +also: flag, flags +A boolean variable that starts with false and is set to true as soon as something has happened. + +### State machine +also: state machine, state machines, state variable, state variables +A program that is always in exactly one state and changes to the next state by fixed rules, e.g. a traffic light. + ### Array also: array, arrays, Arrays A row of slots with one shared name and the same data type. diff --git a/web/lessons/en/visubot/05-zaehlen-und-summieren.md b/web/lessons/en/visubot/05-zaehlen-und-summieren.md new file mode 100644 index 00000000..ca2ef274 --- /dev/null +++ b/web/lessons/en/visubot/05-zaehlen-und-summieren.md @@ -0,0 +1,154 @@ +--- +titel: Counting and adding up +bereich: Sensors and decisions +kurz: Count along with a variable and add values together. +--- + +## Skills I will gain now + +::: kompetenzen +- create a counter variable and count it up in a loop +- build a sum in a loop +- show the result on the screen after the loop +::: + +## Counting along + +How many steps does the mBot2 drive to the wall? You don't know in advance, the world is different every time. So the mBot2 should **count along**. You need three boxes for that: + +1. **Before** the loop: `int steps = 0`. At the start nothing has been counted yet. +2. **Inside** the loop: `steps = steps + 1`. One more after every step. +3. **After** the loop: show the result, for example with `mbot.showText("Steps: " + steps)`. + +Read `steps = steps + 1` from right to left: take the old value of `steps`, add 1 and store the result in `steps` again. A variable like this is called a **counter variable**, or counter for short. + +> Careful: if `int steps = 0` is **inside** the loop, the counter starts again at 0 in every pass. Then the result is always 1. + +::: angeberwissen +Your phone counts your steps exactly like this: with every step it calculates `steps = steps + 1`. I prefer counting my blades of grass. I'm at 4 million. +::: + +::: übung vb-schritte-welt +titel: Steps to the wall +auftrag: Build a structure chart: the mBot2 drives forward as long as the distance is greater than 15. It counts its steps along the way. Then it shows, for example, **Steps: 3** on the screen. There are three worlds. +welt: wand-kurz -> screen "Steps: 3" +welt: wand-mittel -> screen "Steps: 7" +welt: wand-lang -> screen "Steps: 12" +braucht: whileSchleife +tipp: The first box is `int steps = 0`. Then comes the while loop with `mbot.getDistance() > 15`. +tipp: Inside the loop are **drive forward** and `steps = steps + 1`. After the loop is `mbot.showText("Steps: " + steps)`. +lösung: vb-schritte-welt-loesung.visustruct +::: + +## Adding up + +A counter always grows by 1. A **sum** grows by different values. The mBot2 drives a spiral: first 10 cm, then 20, then 30, then 40. How far has it driven in total? + +| Pass | `side` | `total` afterwards | +|---|---|---| +| before | 10 | 0 | +| 1 | 10 | 0 + 10 = 10 | +| 2 | 20 | 10 + 20 = 30 | +| 3 | 30 | 30 + 30 = 60 | +| 4 | 40 | 60 + 40 = 100 | + +The pattern is the same as for counting. Only instead of 1 you now add the value that comes in: `total = total + side`. + +## Now in Java: spiral with distance + +::: übung vb-java-spirale-strecke +titel: Spiral with distance +code: java +auftrag: Write in Java: create `int side = 10` and `int total = 0`. Four times: drive `side` cm forward, turn right, add `side` to `total`, make `side` 10 bigger. Then show **Distance: 100 cm** on the screen. +fahrt: forward 10, turnRight, forward 20, turnRight, forward 30, turnRight, forward 40, turnRight +befehle: showText "Distance: 100 cm" +braucht: forSchleife +tipp: The for loop has four lines: `mbot.forward(side);`, `mbot.turnRight();`, `total = total + side;` and `side = side + 10;`. +tipp: After the loop comes `mbot.showText("Distance: " + total + " cm");`. +lösung: vb-java-spirale-strecke-loesung.visustruct +::: + +::: übung vb-fehler-05-zaehlen-und-summieren +titel: Why doesn't it run? +code: java +auftrag: Ludwig typed in "Spiral with distance", but the program does not run. "Open in editor" shows the code in the Code area. Click "Run" and read the error message. Fix the mistake and click Check. +start: vb-fehler-05-zaehlen-und-summieren-start.visustruct +fahrt: forward 10, turnRight, forward 20, turnRight, forward 30, turnRight, forward 40, turnRight +befehle: showText "Distance: 100 cm" +tipp: The error message names an unknown variable. What is the variable called where it is created? Java is case-sensitive. +tipp: It should be `total = total + side`. +lösung: vb-java-spirale-strecke-loesung.visustruct +::: + +## Game: what is in the variable at the end? + +::: spiel frage +titel: Game: what is in the variable at the end? +intro: Ludwig has written small programs. Work them out in your head. Five rounds. + +runde: +frage: `int z = 0`, then three times `z = z + 1`. What is `z`? +- 1 +- [x] 3 +- 0 +> Each pass adds 1: 1, 2, 3. + +runde: +frage: `int sum = 0`, then `sum = sum + 5` and `sum = sum + 7`. What is `sum`? +- 7 +- [x] 12 +- 5 +> 0 + 5 = 5, then 5 + 7 = 12. + +runde: +frage: A loop runs four times. Inside it are `int z = 0` and `z = z + 1`. What is `z` at the end? +- 4 +- [x] 1 +- 0 +> The counter is set back to 0 in every pass. It belongs before the loop. + +runde: +frage: `int total = 0`. The mBot2 drives 20, 20 and 30 cm and adds each one. What is `total`? +- 30 +- 20 +- [x] 70 +> 20 + 20 + 30 = 70. + +runde: +frage: `int steps = 10`, then twice `steps = steps + 1`. What is `steps`? +- 2 +- [x] 12 +- 11 +> Here the counter starts at 10, not at 0. +::: + +## Checklist + +Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can do this confidently. For ⛅ and ☂️, **Review** helps you. Then comes the quiz. It shows you whether your self-assessment is right. + +::: checkliste +- I can create a counter variable and count it up in a loop. → Counting along +- I can build a sum in a loop. → Adding up +- I can show the result on the screen after the loop. → Now in Java: spiral with distance +::: + +## Quiz + +::: quiz +? Where do you create the counter variable `int steps = 0`? +→ Counting along +- [x] Before the loop +- [ ] Inside the loop +- [ ] After the loop +> Inside the loop it would become 0 again in every pass. +? What does `steps = steps + 1` do? +→ Counting along +- [ ] It compares steps with steps + 1. +- [x] It takes the old value, adds 1 and stores the result. +- [ ] It sets steps to 1. +? How do you add the side length `side` to the sum `total`? +→ Adding up +- [ ] `total = side` +- [ ] `side = total + side` +- [x] `total = total + side` +::: diff --git a/web/lessons/en/visubot/06-konstanten-final.md b/web/lessons/en/visubot/06-konstanten-final.md new file mode 100644 index 00000000..91468c84 --- /dev/null +++ b/web/lessons/en/visubot/06-konstanten-final.md @@ -0,0 +1,151 @@ +--- +titel: Fixed values with final +bereich: Sensors and decisions +kurz: Create a constant so that an important number appears in only one place. +--- + +## Skills I will gain now + +::: kompetenzen +- explain what a constant is +- create a constant in the structure chart and in Java +- use a constant in a condition and in a command +::: + +## One number in many places + +Ludwig has written a program for the hallway: the mBot2 drives up to 20 cm from the wall, turns around and drives up to 20 cm from the other wall. + +::: diagramm vb-l06k-ohne.visustruct +There and back. The number 20 appears in two places. +::: + +Now the mBot2 should stop at 30 cm instead. Ludwig has to find and change every 20. If he forgets one, the mBot2 stops once at 30 and once at 20 cm. In long programs this happens quickly. + +::: angeberwissen +Professionals call a number that just sits in the program a **magic number**. Magic, because nobody remembers what it means. The only magic I like is magic grass. +::: + +## Creating a constant + +A **constant** is better. It is a variable whose value stays the same once it is set. You create it once at the very top and after that you only use its name. + +| | Structure chart | Java | +|---|---|---| +| create | `const int DISTANCE = 20` | `final int DISTANCE = 20;` | +| use | `mbot.getDistance() > DISTANCE` | `mbot.getDistance() > DISTANCE` | + +In the structure chart you write `const` in front, in Java `final`. Both mean: this value does not change any more. Names of constants are written in **capital letters**, so you can spot them right away. + +::: diagramm vb-l06k-mit.visustruct +The same program with the constant DISTANCE. For 30 cm you only change the first line. +::: + +::: übung vb-konstante-wand +titel: Wall with a constant +auftrag: Create the constant `DISTANCE` with the value 20. The mBot2 drives forward as long as the distance is greater than `DISTANCE`. Then it plays a tone. There are three worlds. +welt: wand-kurz -> tone +welt: wand-mittel -> tone +welt: wand-lang -> tone +braucht: whileSchleife +tipp: The first box is a statement with `const int DISTANCE = 20`. Below it comes a while loop. +tipp: The loop condition is `mbot.getDistance() > DISTANCE`. Inside the loop is **drive forward**, after the loop **play tone**. +lösung: vb-konstante-wand-loesung.visustruct +::: + +## Now in Java: square with a constant + +A constant also fits into a command. With `final int SIDE = 30;`, `mbot.forward(SIDE);` drives exactly 30 cm. If the square should get bigger, you only change that one line. + +::: übung vb-java-konstante-seite +titel: Square with a constant +code: java +auftrag: Write in Java: create the constant `SIDE` with the value 30. Then use a for loop to drive a square with side length `SIDE`. +fahrt: 4 x (forward 30, turnRight) +braucht: forSchleife +tipp: The first line is `final int SIDE = 30;`. Then comes `for (int i = 0; i < 4; i++) { … }`. +tipp: Inside the loop are `mbot.forward(SIDE);` and `mbot.turnRight();`. +lösung: vb-java-konstante-seite-loesung.visustruct +::: + +::: übung vb-fehler-06-konstanten-final +titel: Why doesn't it run? +code: java +auftrag: Ludwig typed in "Square with a constant", but the program does not run. "Open in editor" shows the code in the Code area. Click "Run" and read the error message. Fix the mistake and click Check. +start: vb-fehler-06-konstanten-final-start.visustruct +fahrt: 4 x (forward 30, turnRight) +tipp: The error message names an unknown variable. What is the constant called where it is created? Constants are written in capital letters. +tipp: It should be `mbot.forward(SIDE)`. +lösung: vb-java-konstante-seite-loesung.visustruct +::: + +## Game: constant or variable? + +::: spiel frage +titel: Game: constant or variable? +intro: Ludwig is sorting values. If the value stays the same in the whole program, it is a constant. If it changes, it is a variable. Six rounds. +frage: Constant or variable? +antworten: Constant | Variable + +runde: +frage: The number of corners of a square +richtig: Constant +> A square always has four corners. + +runde: +frage: The distance the ultrasonic sensor is measuring right now +richtig: Variable +> When the mBot2 drives, the distance changes all the time. + +runde: +frage: The minimum distance at which the mBot2 should always stop +richtig: Constant +> You set it once, for example `final int DISTANCE = 20;`. + +runde: +frage: The number of steps the mBot2 has already driven +richtig: Variable +> It grows by 1 after every step. + +runde: +frage: The pitch of the warning tone, always 440 Hz +richtig: Constant +> The warning tone always sounds the same. + +runde: +frage: The battery level in percent +richtig: Variable +> The battery slowly runs down while driving. +::: + +## Checklist + +Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can do this confidently. For ⛅ and ☂️, **Review** helps you. Then comes the quiz. It shows you whether your self-assessment is right. + +::: checkliste +- I can explain what a constant is. → Creating a constant +- I can create a constant in the structure chart and in Java. → Creating a constant +- I can use a constant in a condition and in a command. → Now in Java: square with a constant +::: + +## Quiz + +::: quiz +? What is a constant? +→ Creating a constant +- [ ] A variable that changes in every pass +- [x] A variable whose value stays the same once it is set +- [ ] A sensor that always measures the same value +> You set a constant once. After that you only use its name. +? How do you create the constant `DISTANCE` with the value 20 in Java? +→ Creating a constant +- [ ] `const DISTANCE = 20;` +- [x] `final int DISTANCE = 20;` +- [ ] `int final = 20;` +> In Java, `final` comes before the data type. In the structure chart you write `const`. +? Why is a constant better than the number 20 in many places? +→ Creating a constant +- [ ] Because the program drives faster +- [x] Because you only have to change the value in one place +- [ ] Because the sensor measures more precisely +::: diff --git a/web/lessons/en/visubot/06-nah-mittel-weit.md b/web/lessons/en/visubot/06-nah-mittel-weit.md new file mode 100644 index 00000000..3a8a8ae6 --- /dev/null +++ b/web/lessons/en/visubot/06-nah-mittel-weit.md @@ -0,0 +1,189 @@ +--- +titel: Near, medium or far? +bereich: Sensors and decisions +kurz: Build a branch with three cases and write it in Java with else if. +--- + +## Skills I will gain now + +::: kompetenzen +- build a branch with three cases +- read and write `else if` in Java +- check the conditions in the right order +::: + +## Three cases instead of two + +Many cars have a **parking aid**. If the wall is far away, everything is free. When it gets closer, it says: slow. When it is very close: stop! + +A branch has only two branches, yes and no. For three cases you put a second branch into the no branch of the first one: + +1. Is the distance less than 10? Then **Stop**. +2. Otherwise: is the distance less than 30? Then **Slow**. +3. Otherwise: **Free**. + +::: diagramm vb-l06n-einparkhilfe.visustruct +The parking aid. The second question is only asked if the answer to the first one was no. +::: + +Try it in the [simulation](#zeige-simulation): open the diagram in the editor and set the distance to 5, 20 and 50 cm. + +> 📘 **More without the robot:** VisuStruct has the lesson ["Branch"](?visustruct&lektion=08-verzweigung). It opens in a new window. + +## Speed by distance in the structure chart + +::: übung vb-tempo-abstand +titel: Speed by distance +auftrag: Build a structure chart with three cases: if the distance is less than 10, the mBot2 drives 5 cm backward. Otherwise: if the distance is less than 30, it drives 5 cm forward. Otherwise it drives 20 cm forward. +messwerte: getDistance=5 -> backward 5 +messwerte: getDistance=20 -> forward 5 +messwerte: getDistance=50 -> forward 20 +braucht: verzweigung +tipp: Build it like the parking aid: a branch with `mbot.getDistance() < 10` and in its no branch a second one with `mbot.getDistance() < 30`. +tipp: The commands are `mbot.backward(5)`, `mbot.forward(5)` and `mbot.forward(20)`. The last one goes into the no branch of the second branch. +lösung: vb-tempo-abstand-loesung.visustruct +::: + +> When checking, VisuStruct sets the distance to 5, 20 and 50 cm one after the other. + +## Now in Java: else if + +Look at the [Code](#zeige-codelive) area. The branch inside the no branch looks like this: + +```java +if (mbot.getDistance() < 10) { + mbot.showText("Stop"); +} else { + if (mbot.getDistance() < 30) { + mbot.showText("Slow"); + } else { + mbot.showText("Free"); + } +} +``` + +In Java you may write this more briefly. The `if` moves right behind the `else`: + +```java +if (mbot.getDistance() < 10) { + mbot.showText("Stop"); +} else if (mbot.getDistance() < 30) { + mbot.showText("Slow"); +} else { + mbot.showText("Free"); +} +``` + +Both mean exactly the same. With `else if` it is easier to read, though. You still always write the curly brackets `{ }`. + +::: übung vb-java-tageszeit +titel: Day or night? +code: java +auftrag: Write in Java with `else if`: if the brightness is less than 20, the mBot2 shows **Night**. Otherwise: if it is less than 60, it shows **Dusk**. Otherwise it shows **Day**. +messwerte: getBrightness=10 -> none, screen "Night" +messwerte: getBrightness=40 -> none, screen "Dusk" +messwerte: getBrightness=80 -> none, screen "Day" +braucht: verzweigung +tipp: You read the brightness with `mbot.getBrightness()`. The first condition is `mbot.getBrightness() < 20`. +tipp: `if (…) { mbot.showText("Night"); } else if (mbot.getBrightness() < 60) { mbot.showText("Dusk"); } else { mbot.showText("Day"); }` +lösung: vb-java-tageszeit-loesung.visustruct +::: + +::: übung vb-fehler-06-nah-mittel-weit +titel: Why doesn't it run? +code: java +auftrag: Ludwig typed in "Day or night?", but the program does not run. "Open in editor" shows the code in the Code area. Click "Run" and read the error message. Fix the mistake and click Check. +start: vb-fehler-06-nah-mittel-weit-start.visustruct +messwerte: getBrightness=10 -> none, screen "Night" +messwerte: getBrightness=40 -> none, screen "Dusk" +messwerte: getBrightness=80 -> none, screen "Day" +tipp: A text belongs in quotation marks. Without them Java looks for a variable with that name. +tipp: It should be `mbot.showText("Night")`. +lösung: vb-java-tageszeit-loesung.visustruct +::: + +## The order matters + +Ludwig rebuilt the parking aid and swapped the questions: + +```java +if (mbot.getDistance() < 30) { + mbot.showText("Slow"); +} else if (mbot.getDistance() < 10) { + mbot.showText("Stop"); +} +``` + +At 5 cm his mBot2 shows **Slow** instead of **Stop**. That is because 5 is also less than 30. The first condition is already true, so the second one is never checked. **Stop** never appears. + +> Remember: with `<`, check the smallest value first, then the next bigger one. + +::: spiel frage +titel: Game: what does the parking aid show? +intro: Ludwig's parking aid from above: under 10 cm **Stop**, under 30 cm **Slow**, otherwise **Free**. What does it show? Six rounds. +frage: What does the parking aid show? +antworten: Stop | Slow | Free + +runde: +frage: The distance is **5 cm**. +richtig: Stop +> 5 is less than 10. The very first question is true. + +runde: +frage: The distance is **25 cm**. +richtig: Slow +> 25 is not less than 10, but it is less than 30. + +runde: +frage: The distance is **80 cm**. +richtig: Free +> Both questions are false, so the last no branch is left. + +runde: +frage: The distance is exactly **10 cm**. +richtig: Slow +> 10 is not less than 10. The first question is false, the second true. + +runde: +frage: The distance is exactly **30 cm**. +richtig: Free +> 30 is not less than 30. Both questions are false. + +runde: +frage: The distance is **9 cm**. +richtig: Stop +> 9 is less than 10. +::: + +## Checklist + +Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can do this confidently. For ⛅ and ☂️, **Review** helps you. Then comes the quiz. It shows you whether your self-assessment is right. + +::: checkliste +- I can build a branch with three cases. → Three cases instead of two +- I can read and write `else if` in Java. → Now in Java: else if +- I can check the conditions in the right order. → The order matters +::: + +## Quiz + +::: quiz +? How many branches do you need in the structure chart for three cases? +→ Three cases instead of two +- [ ] One +- [x] Two, the second in the no branch of the first +- [ ] Three side by side +> Each branch splits into two. The second one splits the no branch again. +? What does `else if` mean in Java? +→ Now in Java: else if +- [x] Otherwise, check another condition +- [ ] Repeat the condition +- [ ] Check both conditions at the same time +> `else if` is the short way of writing an `if` inside the `else` branch. +? Ludwig checks `< 30` first and then `< 10`. What happens at 5 cm? +→ The order matters +- [ ] Stop appears. +- [x] Slow appears. +- [ ] Nothing appears. +> 5 is also less than 30. The second condition is no longer checked. +::: diff --git a/web/lessons/en/visubot/08-groesster-wert.md b/web/lessons/en/visubot/08-groesster-wert.md new file mode 100644 index 00000000..11506f2e --- /dev/null +++ b/web/lessons/en/visubot/08-groesster-wert.md @@ -0,0 +1,162 @@ +--- +titel: The biggest value +bereich: Sensors and decisions +kurz: Measure all around and remember the biggest value: where is the most space? +--- + +## Skills I will gain now + +::: kompetenzen +- remember the biggest value so far in a variable +- compare every new reading with the biggest so far in a loop +- find out with the mBot2 in which direction there is the most space +::: + +## Remembering the record + +In the long jump there is a board showing the **record**. After every jump the referee checks: is the new jump longer than the record? Then it goes on the board. Otherwise the old record stays. + +A program finds the biggest value in exactly the same way. The board is a variable `max`: + +1. **Before** the loop: `int max = 0`. Nothing is on the board yet. +2. **Inside** the loop: is the new value bigger than `max`? Then `max = value`. +3. **After** the loop, `max` holds the biggest value. + +The mBot2 turns four times and measures the distance each time. This is how it looks in a desk check: + +| Direction | measured | bigger than `max`? | `max` afterwards | +|---|---|---|---| +| before | | | 0 | +| ahead | 16 | yes | 16 | +| right | 36 | yes | 36 | +| behind | 6 | no | 36 | +| left | 26 | no | 36 | + +> Important: the branch only has a yes branch. If the value is not bigger, nothing happens. The old record stays. + +## Where is the most space? + +::: übung vb-meister-platz +titel: Where is the most space? +auftrag: Build a structure chart: create `int max = 0`. The mBot2 measures the distance four times and turns right after each one. If a distance is bigger than `max`, it remembers it in `max`. At the end it shows, for example, **Farthest: 36 cm**. There are two worlds. +welt: platz-1 -> screen "Farthest: 36 cm" +welt: platz-2 -> screen "Farthest: 46 cm" +braucht: forSchleife, verzweigung +tipp: The for loop runs four times. It contains three boxes: `int distance = mbot.getDistance()`, a branch and **turn right**. +tipp: The branch checks `distance > max`. The yes branch has `max = distance`, the no branch stays empty. After the loop: `mbot.showText("Farthest: " + max + " cm")`. +lösung: vb-meister-platz-loesung.visustruct +::: + +::: angeberwissen +Many robot vacuums have a small tower with a laser on top. It spins and measures the distances all around. That way the robot draws a map of the home. Nobody measures anything at my place. I just eat my way through. +::: + +## Now in Java: remembering the direction + +Now the mBot2 knows **how much** space there is at most. But **where**? For that it also remembers the direction in a second variable. The counter variable `i` tells you which measurement it was: 0 is ahead, 1 is right, 2 is behind and 3 is left. + +```java +if (distance > max) { + max = distance; + direction = i; +} +``` + +Both lines are in the yes branch. The direction only changes when there is a new record. + +::: übung vb-java-richtung +titel: Remembering the direction +code: java +auftrag: Write "Where is the most space?" in Java. Also remember in `int direction = 0` the number of the measurement with the biggest distance. At the end show, for example, **Direction: 1**. +welt: platz-1 -> screen "Direction: 1" +welt: platz-2 -> screen "Direction: 0" +braucht: forSchleife, verzweigung +tipp: Before the loop are `int max = 0;` and `int direction = 0;`. Inside the loop: `int distance = mbot.getDistance();`, the branch and `mbot.turnRight();`. +tipp: The yes branch has `max = distance;` and `direction = i;`. After the loop: `mbot.showText("Direction: " + direction);` +lösung: vb-java-richtung-loesung.visustruct +::: + +::: übung vb-fehler-08-groesster-wert +titel: Why doesn't it run? +code: java +auftrag: Ludwig typed in "Remembering the direction", but the program does not run. "Open in editor" shows the code in the Code area. Click "Run" and read the error message. Fix the mistake and click Check. +start: vb-fehler-08-groesster-wert-start.visustruct +welt: platz-1 -> screen "Direction: 1" +welt: platz-2 -> screen "Direction: 0" +tipp: The error message names an unknown variable. What is the variable called where it is created? Java is case-sensitive. +tipp: It should be `direction = i`. +lösung: vb-java-richtung-loesung.visustruct +::: + +## Game: new record? + +::: spiel frage +titel: Game: new record? +intro: The mBot2 measures several distances one after the other. What is in `max` at the end? Five rounds. + +runde: +frage: Measured: 20, 50, 30 +- 30 +- [x] 50 +- 100 +> 50 is the biggest value. The 30 after it is not a new record. + +runde: +frage: Measured: 10, 20, 30, 40 +- 10 +- [x] 40 +- 100 +> Every value is a new record. At the end the last one is there. + +runde: +frage: Measured: 90, 10, 20, 30 +- 30 +- [x] 90 +- 10 +> The record comes right at the start. After that no value is bigger. + +runde: +frage: Measured: 15, 15, 15 +- 45 +- 0 +- [x] 15 +> 15 is not bigger than 15. `max` stays 15. + +runde: +frage: Measured: 25, 60, 60, 5. In which direction (`i`) is the record? +- 0 +- [x] 1 +- 2 +> At `i = 1` the 60 comes. The second 60 is not **bigger**, so `direction` stays at 1. +::: + +## Checklist + +Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can do this confidently. For ⛅ and ☂️, **Review** helps you. Then comes the quiz. It shows you whether your self-assessment is right. + +::: checkliste +- I can remember the biggest value so far in a variable. → Remembering the record +- I can compare every new reading with the biggest so far in a loop. → Where is the most space? +- I can find out with the mBot2 in which direction there is the most space. → Now in Java: remembering the direction +::: + +## Quiz + +::: quiz +? What does `max` start with before the loop? +→ Remembering the record +- [x] With 0, because nothing has been measured yet +- [ ] With the biggest value +- [ ] With 100 +> Every distance is bigger than 0, so the very first reading becomes the record. +? What is in the no branch of the branch `distance > max`? +→ Remembering the record +- [ ] `max = 0` +- [ ] `max = distance` +- [x] Nothing, the old record stays. +? When does `direction` change? +→ Now in Java: remembering the direction +- [ ] In every pass +- [x] Only when there is a new record +- [ ] Only in the last round +::: diff --git a/web/lessons/en/visubot/11-merker-boolean.md b/web/lessons/en/visubot/11-merker-boolean.md new file mode 100644 index 00000000..c6fb016f --- /dev/null +++ b/web/lessons/en/visubot/11-merker-boolean.md @@ -0,0 +1,155 @@ +--- +titel: A flag with boolean +bereich: Sensors and decisions +kurz: Use a variable of type boolean to remember whether something happened. +--- + +## Skills I will gain now + +::: kompetenzen +- create a variable of type `boolean` +- use a flag to remember whether something happened +- check a flag in a condition after the loop +::: + +## True or false + +A variable of type `boolean` knows only two values: `true` and `false`. You already know this from the sensors: `mbot.isButtonA()` gives you `true` or `false`. A comparison like `mbot.getDistance() < 10` is also `true` or `false` in the end. + +| Code | Meaning | +|---|---| +| `boolean dark = false` | It has not been dark yet. | +| `dark = true` | Now it has been dark. | +| `if (dark)` | Is `dark` true? | + +With `if (dark)` you don't need `== true`. The variable itself is already true or false. + +## The flag + +The mBot2 should keep watch for three seconds. It measures the brightness again and again. Afterwards it should say whether it was dark **at any point**. + +For this you use a **flag**: a `boolean` variable that starts with `false`. When it gets dark, you set it to `true`. After that nobody sets it back. So after the loop you know: was it dark even just once? + +::: übung vb-wurde-es-dunkel +titel: Did it get dark? +auftrag: Build a structure chart: create `boolean dark = false`. In a for loop, check 30 times: if the brightness is less than 20, `dark` becomes true. Wait 100 ms in every pass. Then show **It was dark** or **Always bright**. +messwerte: getBrightness=80/10/80 -> none, screen "It was dark" +messwerte: getBrightness=80 -> none, screen "Always bright" +braucht: forSchleife, verzweigung +tipp: Inside the loop is a branch with `mbot.getBrightness() < 20`. The yes branch has `dark = true`, the no branch stays empty. Then comes `mbot.pause(100)`. +tipp: After the loop comes a second branch with the condition `dark`. Yes: `mbot.showText("It was dark")`, no: `mbot.showText("Always bright")`. +lösung: vb-wurde-es-dunkel-loesung.visustruct +::: + +> When checking, it gets dark for a moment in the middle of the watch and then bright again. Does your mBot2 still show **It was dark**? + +## Now in Java: was there a clap? + +In Java the flag looks like this: + +```java +boolean loud = false; +for (int i = 0; i < 30; i++) { + if (mbot.getLoudness() > 60) { + loud = true; + } + mbot.pause(100); +} +``` + +In Java you always write `true` and `false` in lower case. + +::: übung vb-java-klatsch-merker +titel: Was there a clap? +code: java +auftrag: Write in Java: the mBot2 listens for three seconds (30 times with a 100 ms pause). If the loudness is ever greater than 60, it remembers this in `boolean loud`. Then it shows **Clap!** or **All quiet**. +messwerte: getLoudness=0/90/0 -> none, screen "Clap!" +messwerte: getLoudness=0 -> none, screen "All quiet" +braucht: forSchleife, verzweigung +tipp: Take the code above and then write `if (loud) { … } else { … }`. +tipp: The branches get `mbot.showText("Clap!");` and `mbot.showText("All quiet");`. +lösung: vb-java-klatsch-merker-loesung.visustruct +::: + +::: übung vb-fehler-11-merker-boolean +titel: Why doesn't it run? +code: java +auftrag: Ludwig typed in "Was there a clap?", but the program does not run. "Open in editor" shows the code in the Code area. Click "Run" and read the error message. Fix the mistake and click Check. +start: vb-fehler-11-merker-boolean-start.visustruct +messwerte: getLoudness=0/90/0 -> none, screen "Clap!" +messwerte: getLoudness=0 -> none, screen "All quiet" +tipp: The error message names an unknown variable. How do you write true and false in Java? Java is case-sensitive. +tipp: It should be `loud = true`. +lösung: vb-java-klatsch-merker-loesung.visustruct +::: + +## Game: true or false? + +::: spiel frage +titel: Game: true or false? +intro: Ludwig asks what the condition comes out as. Six rounds. +frage: Is it true or false? +antworten: true | false + +runde: +frage: `mbot.getDistance() < 10`, the distance is 25 cm. +richtig: false +> 25 is not less than 10. + +runde: +frage: `mbot.isButtonA()`, and you are pressing button A right now. +richtig: true +> The sensor reports: pressed. + +runde: +frage: `boolean dark = false`. It never gets dark in the loop. What is `dark` afterwards? +richtig: false +> Nobody set the flag to `true`. + +runde: +frage: `boolean dark = false`. It gets dark once in the loop, then bright again. What is `dark` afterwards? +richtig: true +> A flag stays `true` once it has been set. + +runde: +frage: `mbot.getBrightness() > 50`, the brightness is 50. +richtig: false +> 50 is not greater than 50. + +runde: +frage: `!mbot.isButtonA()`, and you are not pressing button A. +richtig: true +> Button A is not pressed, so `false`. The `!` turns it around: `true`. +::: + +## Checklist + +Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can do this confidently. For ⛅ and ☂️, **Review** helps you. Then comes the quiz. It shows you whether your self-assessment is right. + +::: checkliste +- I can create a variable of type `boolean`. → True or false +- I can use a flag to remember whether something happened. → The flag +- I can check a flag in a condition after the loop. → Now in Java: was there a clap? +::: + +## Quiz + +::: quiz +? Which values can a variable of type `boolean` have? +→ True or false +- [ ] Any whole number +- [x] Only `true` and `false` +- [ ] Only 0 and 1 +? What does a flag start with? +→ The flag +- [x] With `false`, because nothing has happened yet +- [ ] With `true` +- [ ] With the first reading +> Only when the event happens does it become `true`. +? How do you check in Java whether the flag `loud` is true? +→ Now in Java: was there a clap? +- [x] `if (loud)` +- [ ] `if (loud = true)` +- [ ] `if loud` +> `loud` itself is already true or false. A single `=` would be an assignment. +::: diff --git a/web/lessons/en/visubot/21-zustaende.md b/web/lessons/en/visubot/21-zustaende.md new file mode 100644 index 00000000..c93c9cd7 --- /dev/null +++ b/web/lessons/en/visubot/21-zustaende.md @@ -0,0 +1,160 @@ +--- +titel: States: what am I doing right now? +bereich: Motors and methods +kurz: Switch a robo traffic light on with a state variable and a switch. +--- + +## Skills I will gain now + +::: kompetenzen +- explain what a state is +- act depending on the state with a switch and change to the next state +- tell states apart in Java with names and `.equals` +::: + +## What is a state? + +A traffic light is always in exactly one **state**: red, green or yellow. In each state it knows two things: what do I show? And what comes next? + +Our robo traffic light has three states. Each gets a number: + +| State | LEDs | next | +|---|---|---| +| 0 | red | 1 | +| 1 | green | 2 | +| 2 | yellow | 0 | + +You store the current state in a variable: `int state = 0`. A variable like this is called a **state variable**. A program that jumps from state to state like this is called a **state machine**. + +> A real traffic light in Germany has four states: red, red-yellow, green, yellow. Our robo traffic light leaves out red-yellow. + +::: angeberwissen +A robot vacuum is a state machine too: vacuuming, avoiding, driving back to the charging station. I only have two states: eating and sleeping. +::: + +## The robo traffic light in the structure chart + +The switch fits perfectly: there is one case for each state. Each case has two boxes: what do I do? And which state comes next? + +::: übung vb-ampel-zustand +titel: Robo traffic light +auftrag: Build a structure chart: create `int state = 0`. A for loop runs six times. Inside it is a switch on `state`. Case 0: LEDs red, `state = 1`. Case 1: LEDs green, `state = 2`. Otherwise: LEDs yellow, `state = 0`. After the switch the mBot2 waits one second. +befehle: 2 x (setLed 255 0 0, pause 1000, setLed 0 255 0, pause 1000, setLed 255 200 0, pause 1000) +braucht: forSchleife, fallauswahl +tipp: You will find the switch among the Elements. Write `state` into it. The cases are called 0, 1 and default. +tipp: The colours are `mbot.setLed(255, 0, 0)` for red, `mbot.setLed(0, 255, 0)` for green and `mbot.setLed(255, 200, 0)` for yellow. Below the switch, still inside the loop, is `mbot.pause(1000)`. +lösung: vb-ampel-zustand-loesung.visustruct +::: + +> 📘 **More without the robot:** VisuStruct has the lesson ["Switch"](?visustruct&lektion=10-fallauswahl). It opens in a new window. + +## Now in Java: states with names + +Numbers are easy to forget. What was state 2 again? Names are easier to read. Then the state is a text: + +```java +String state = "red"; +... +if (state.equals("red")) { + mbot.setLed(255, 0, 0); + state = "green"; +} else if (state.equals("green")) { + ... +``` + +In Java you compare texts with `.equals("…")`, not with `==`. + +::: übung vb-java-ampel-text +titel: Traffic light with names +code: java +auftrag: Write the robo traffic light in Java with `String state = "red";`. Use `if` and `else if` to check which state the light is in: red, then green, then yellow, then red again. The loop runs six times, with a 1 second pause after each pass. +befehle: 2 x (setLed 255 0 0, pause 1000, setLed 0 255 0, pause 1000, setLed 255 200 0, pause 1000) +braucht: forSchleife, verzweigung +tipp: Inside the loop: `if (state.equals("red")) { … } else if (state.equals("green")) { … } else { … }` and then `mbot.pause(1000);`. +tipp: In the red case are `mbot.setLed(255, 0, 0);` and `state = "green";`. Green switches to `"yellow"`, yellow back to `"red"`. +lösung: vb-java-ampel-text-loesung.visustruct +::: + +::: übung vb-fehler-21-zustaende +titel: Why doesn't it run? +code: java +auftrag: Ludwig typed in "Traffic light with names", but the program does not run. "Open in editor" shows the code in the Code area. Click "Run" and read the error message. Fix the mistake and click Check. +start: vb-fehler-21-zustaende-start.visustruct +befehle: 2 x (setLed 255 0 0, pause 1000, setLed 0 255 0, pause 1000, setLed 255 200 0, pause 1000) +tipp: A text belongs in quotation marks. Without them Java looks for a variable with that name. +tipp: It should be `state = "green"`. +lösung: vb-java-ampel-text-loesung.visustruct +::: + +## States while driving + +The mBot2 can also drive with states. In the state **drive** it drives forward. When it sees a wall, it changes to the state **turn**. There it turns once and changes back to **drive**. + +::: diagramm vb-l21z-ausweichen.visustruct +Driving and avoiding with two states. Open the diagram in the editor and try it out in a world. +::: + +## Game: which state comes now? + +::: spiel frage +titel: Game: which state comes now? +intro: The robo traffic light switches: 0 red → 1 green → 2 yellow → 0 red. Which state comes next? Five rounds. +frage: Which state comes next? +antworten: 0 | 1 | 2 + +runde: +frage: The light is in state **0** (red) right now. +richtig: 1 +> After red comes green. + +runde: +frage: The light is in state **2** (yellow) right now. +richtig: 0 +> After yellow it starts all over again. + +runde: +frage: The light is in state **1** (green) right now. +richtig: 2 +> After green comes yellow. + +runde: +frage: The light starts in state 0 and switches on **twice**. +richtig: 2 +> 0 → 1 → 2. + +runde: +frage: The light starts in state 0 and switches on **three times**. +richtig: 0 +> 0 → 1 → 2 → 0. After three steps it is back at the start. +::: + +## Checklist + +Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can do this confidently. For ⛅ and ☂️, **Review** helps you. Then comes the quiz. It shows you whether your self-assessment is right. + +::: checkliste +- I can explain what a state is. → What is a state? +- I can act depending on the state with a switch and change to the next state. → The robo traffic light in the structure chart +- I can tell states apart in Java with names and `.equals`. → Now in Java: states with names +::: + +## Quiz + +::: quiz +? What does a state variable store? +→ What is a state? +- [ ] How often the loop has run +- [x] What the program is doing right now, for example red or green +- [ ] The biggest reading +? What is in each case of the switch? +→ The robo traffic light in the structure chart +- [x] What to do and which state comes next +- [ ] Only a pause +- [ ] A new loop +? How do you check in Java whether `state` contains the text `"red"`? +→ Now in Java: states with names +- [ ] `state == red` +- [x] `state.equals("red")` +- [ ] `state = "red"` +> You compare texts with `.equals`. A single `=` would assign `"red"`. +::: diff --git a/web/lessons/welten/platz-1.txt b/web/lessons/welten/platz-1.txt new file mode 100644 index 00000000..bc337091 --- /dev/null +++ b/web/lessons/welten/platz-1.txt @@ -0,0 +1,8 @@ +// Wo ist am meisten Platz? Rechts ist es am weitesten. +........... +.....#..... +........... +........... +.#...^....# +........... +.....#..... diff --git a/web/lessons/welten/platz-2.txt b/web/lessons/welten/platz-2.txt new file mode 100644 index 00000000..588885aa --- /dev/null +++ b/web/lessons/welten/platz-2.txt @@ -0,0 +1,11 @@ +// Wo ist am meisten Platz? Vorn ist es am weitesten. +.....#..... +........... +........... +........... +........... +........... +....#^.#... +........... +........... +.....#..... diff --git a/web/package-lock.json b/web/package-lock.json index 5dddc1c0..7ddbad9d 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -1,12 +1,12 @@ { "name": "visustruct-web", - "version": "0.15.5", + "version": "0.15.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "visustruct-web", - "version": "0.15.5", + "version": "0.15.6", "dependencies": { "@codemirror/autocomplete": "^6.20.4", "@codemirror/commands": "^6.11.1", diff --git a/web/package.json b/web/package.json index 94711a89..6d87c992 100644 --- a/web/package.json +++ b/web/package.json @@ -1,7 +1,7 @@ { "name": "visustruct-web", "private": true, - "version": "0.15.5", + "version": "0.15.6", "type": "module", "scripts": { "dev": "vite", diff --git a/web/test/visubotLessons.test.ts b/web/test/visubotLessons.test.ts index eb8fa79f..b42c74eb 100644 --- a/web/test/visubotLessons.test.ts +++ b/web/test/visubotLessons.test.ts @@ -31,7 +31,7 @@ describe.each(['de', 'en'] as const)('VisuBot-Lektionen (%s)', (lang) => { afterAll(() => useVisuBotContent('off')) it('zeigt nur die Roboter-Lektionen und -Aufgaben, lückenlos nummeriert, in Teilen', () => { - expect(lessons.length).toBeGreaterThanOrEqual(27) + expect(lessons.length).toBeGreaterThanOrEqual(33) expect(lessons.every((l) => l.robot)).toBe(true) lessons.forEach((l, i) => { expect(l.number, l.id).toBe(i + 1) @@ -47,6 +47,13 @@ describe.each(['de', 'en'] as const)('VisuBot-Lektionen (%s)', (lang) => { expect(at('03-zeile-fuer-zeile-testen')).toBe(at('03-variablen-und-ausgabe') + 1) expect(at('05-erst-fahren-dann-pruefen')).toBe(at('05-bis-zur-wand') + 1) expect(at('10-unterbrechen-mit-break')).toBe(at('10-tasten-joystick') + 1) + // Grundlagen kleinschrittig: Zählen, Konstanten, else if, Maximum, Merker, Zustände + expect(at('05-zaehlen-und-summieren')).toBe(at('05-erst-fahren-dann-pruefen') + 1) + expect(at('06-konstanten-final')).toBe(at('06-abstand') + 1) + expect(at('06-nah-mittel-weit')).toBe(at('06-konstanten-final') + 1) + expect(at('08-groesster-wert')).toBe(at('08-farben') + 1) + expect(at('11-merker-boolean')).toBe(at('11-licht') + 1) + expect(at('21-zustaende')).toBe(at('21-stoppuhr-akku') + 1) expect(tasks.length).toBeGreaterThanOrEqual(16) expect(tasks.every((t) => t.robot)).toBe(true) for (const t of tasks) if (t.after !== undefined) expect(lessons.some((l) => l.number === t.after), t.id).toBe(true) @@ -66,10 +73,10 @@ describe.each(['de', 'en'] as const)('VisuBot-Lektionen (%s)', (lang) => { const tour = lessons.find((l) => l.id === '01-der-mbot2')! const word = { de: 'Lektion', en: 'Lesson' }[lang] expect(JSON.stringify(tour.steps).toLowerCase()).toContain(`${word} ${quadrat.number}`.toLowerCase()) - // eingeschobene Lektionen verschieben die Nummern: Motoren (Datei 20) ist Lektion 25 + // eingeschobene Lektionen verschieben die Nummern: Motoren (Datei 20) ist Lektion 30 const motoren = lessons.find((l) => l.id === '20-motoren')! const sensoren = lessons.find((l) => l.id === '04-sensoren')! - expect(motoren.number).toBe(25) + expect(motoren.number).toBe(30) expect(JSON.stringify(sensoren.steps).toLowerCase()).toContain(`${word} ${motoren.number}`.toLowerCase()) }) @@ -170,7 +177,7 @@ describe.each(['de', 'en'] as const)('VisuStruct ohne Roboter, VisuBot nur mit R it('VisuBot zeigt nur Roboter-Lektionen und -Aufgaben, Nachschlagen mit den mBot2-Kategorien', () => { useVisuBotContent('on') - expect(lessons.filter((l) => l.robot).length).toBeGreaterThanOrEqual(27) + expect(lessons.filter((l) => l.robot).length).toBeGreaterThanOrEqual(33) expect(lessons.filter((l) => !l.robot)).toEqual([]) expect(tasks.map((t) => t.id)).toEqual(expect.arrayContaining(robotTasks)) expect(tasks.filter((t) => !t.robot)).toEqual([]) diff --git a/website/app/assets/flowApp-B31MybDd.js b/website/app/assets/flowApp-Cm9Y7QcZ.js similarity index 99% rename from website/app/assets/flowApp-B31MybDd.js rename to website/app/assets/flowApp-Cm9Y7QcZ.js index c20a6a69..f91dfd01 100644 --- a/website/app/assets/flowApp-B31MybDd.js +++ b/website/app/assets/flowApp-Cm9Y7QcZ.js @@ -1,4 +1,4 @@ -var dt=Object.defineProperty;var lt=(i,t,e)=>t in i?dt(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var y=(i,t,e)=>lt(i,typeof t!="symbol"?t+"":t,e);import{t as h,g as ct,i as I,w as ht,o as ut,f as ft,q as G,u as pt,v as gt,x as wt,y as vt,z as mt,l as xt,n as yt}from"./index-_t0Bkwfx.js";const et=["start","anweisung","ein","verzweigung","unterprogramm","ende"],m=20,st={start:"#d1f2d9",ende:"#d1f2d9",anweisung:"#e5f0ff",ein:"#f2e6ff",verzweigung:"#fff4d6",unterprogramm:"#e5f0ff"},H=16,bt=170;function _t(i,t,e){const n=[];for(const s of i.split(` +var dt=Object.defineProperty;var lt=(i,t,e)=>t in i?dt(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var y=(i,t,e)=>lt(i,typeof t!="symbol"?t+"":t,e);import{t as h,g as ct,i as I,w as ht,o as ut,f as ft,q as G,u as pt,v as gt,x as wt,y as vt,z as mt,l as xt,n as yt}from"./index-COUsEkzk.js";const et=["start","anweisung","ein","verzweigung","unterprogramm","ende"],m=20,st={start:"#d1f2d9",ende:"#d1f2d9",anweisung:"#e5f0ff",ein:"#f2e6ff",verzweigung:"#fff4d6",unterprogramm:"#e5f0ff"},H=16,bt=170;function _t(i,t,e){const n=[];for(const s of i.split(` `)){let o="";for(const r of s.split(/\s+/).filter(Boolean)){const a=o?`${o} ${r}`:r;o&&e(a)>t?(n.push(o),o=r):o=a}n.push(o)}return n.length?n:[""]}const U=i=>Math.round(i/m)*m;function C(i,t){const e=_t(i.text,bt,t),n=Math.max(0,...e.map(t)),s=e.length*H;let o,r;if(i.shape==="verzweigung")o=Math.max(140,n*1.7+30),r=Math.max(80,s*1.8+24);else{const a=i.shape==="ein"?44:i.shape==="unterprogramm"?40:i.shape==="anweisung"?24:36;o=Math.max(i.shape==="start"||i.shape==="ende"?100:120,n+a),r=Math.max(40,s+18)}return{x:i.x,y:i.y,w:Math.ceil(o/m)*m,h:Math.ceil(r/m)*m,lines:e}}function V(i){return i==="ende"?[]:i==="verzweigung"?["ja","nein"]:["out"]}const P=i=>i!=="start";function j(i,t,e){var s;if(e==="out")return"bottom";const n=((s=i.yesRight)==null?void 0:s.includes(t.id))??!1;return e==="ja"===n?"right":"bottom"}function F(i,t){return t==="bottom"?[i.x,i.y+i.h/2]:[i.x+i.w/2,i.y]}const $t=i=>[i.x,i.y-i.h/2];function Lt(i,t,e,n=0){const[s,o]=F(i,t),[r,a]=$t(e),d=m,u=Math.max(i.x+i.w/2,e.x+e.w/2)+d*(1.5+n);if(t==="bottom"){if(a>=o+d){if(s===r)return[[s,o],[r,a]];const l=o+d;return[[s,o],[s,l],[r,l],[r,a]]}return[[s,o],[s,o+d],[u,o+d],[u,a-d],[r,a-d],[r,a]]}const p=e.x-e.w/2;if(p>=s+d&&Math.abs(e.y-o)=o+d){if(r>=s+d)return[[s,o],[r,o],[r,a]];const l=s+d;return[[s,o],[l,o],[l,a-d],[r,a-d],[r,a]]}const f=Math.max(s+d,u);return[[s,o],[f,o],[f,a-d],[r,a-d],[r,a]]}function nt(i=""){return{title:i,nodes:[],edges:[]}}function it(i,t){const e=new Set([...i.nodes.map(s=>s.id),...i.edges.map(s=>s.id)]);let n=1;for(;e.has(`${t}${n}`);)n++;return`${t}${n}`}function q(i,t,e,n,s){const o=it(i,"n");return{doc:{...i,nodes:[...i.nodes,{id:o,shape:t,x:U(e),y:U(n),text:s}]},id:o}}function J(i,t,e,n){return{...i,nodes:i.nodes.map(s=>s.id===t?{...s,x:Math.max(m*4,U(e)),y:Math.max(m*2,U(n))}:s)}}function Et(i,t,e){return{...i,nodes:i.nodes.map(n=>n.id===t?{...n,text:e}:n)}}function _(i,t,e,n){const s=i.nodes.find(a=>a.id===t),o=i.nodes.find(a=>a.id===n);if(!s||!o||t===n||!V(s.shape).includes(e)||!P(o.shape))return i;const r=i.edges.filter(a=>!(a.from===t&&a.port===e));return{...i,edges:[...r,{id:it(i,"e"),from:t,port:e,to:n}]}}function kt(i,t){return V(t.shape).find(e=>!i.edges.some(n=>n.from===t.id&&n.port===e))}function St(i,t){var e;return{...i,nodes:i.nodes.filter(n=>n.id!==t),edges:i.edges.filter(n=>n.from!==t&&n.to!==t),yesRight:(e=i.yesRight)==null?void 0:e.filter(n=>n!==t)}}function Mt(i,t){return{...i,edges:i.edges.filter(e=>e.id!==t)}}function ot(i,t){const e=new Set(i.yesRight??[]);return e.has(t)?e.delete(t):e.add(t),{...i,yesRight:[...e]}}function b(i){return JSON.stringify({format:"visuflow",version:1,...i},null,2)}function W(i){let t;try{t=JSON.parse(i)}catch{return}if(!t||typeof t!="object")return;const e=t;if(!Array.isArray(e.nodes)||!Array.isArray(e.edges))return;const n=[];for(const o of e.nodes)!o||typeof o.id!="string"||!et.includes(o.shape)||!Number.isFinite(o.x)||!Number.isFinite(o.y)||n.some(r=>r.id===o.id)||n.push({id:o.id,shape:o.shape,x:o.x,y:o.y,text:typeof o.text=="string"?o.text:""});let s={title:typeof e.title=="string"?e.title:"",nodes:n,edges:[]};for(const o of e.edges)!o||typeof o.from!="string"||typeof o.to!="string"||typeof o.port!="string"||(s=_(s,o.from,o.port,o.to));return Array.isArray(e.yesRight)&&(s.yesRight=e.yesRight.filter(o=>typeof o=="string"&&n.some(r=>r.id===o))),s}const z="http://www.w3.org/2000/svg",X="visuflow.doc",At=100,Y=14,rt=`${Y}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif`,B="#1c1c1e",w=i=>i.replace(/[&<>"]/g,t=>({"&":"&","<":"<",">":">",'"':"""})[t]);function It(i){try{return localStorage.getItem(i)}catch{return null}}function Z(i,t){try{localStorage.setItem(i,t)}catch{}}function Ct(){return xt("visustruct",yt())}function D(i,t,e){const n=URL.createObjectURL(new Blob([t],{type:e})),s=document.createElement("a");s.href=n,s.download=i,s.click(),setTimeout(()=>URL.revokeObjectURL(n),1e3)}function v(i,t={}){const e=document.createElementNS(z,i);for(const[n,s]of Object.entries(t))e.setAttribute(n,String(s));return e}let N;function R(i){return N===void 0&&(N=document.createElement("canvas").getContext("2d")),N?(N.font=rt,N.measureText(i).width):i.length*Y*.55}const Rt=i=>h(`web_visuflow_shape_${i}`),T=i=>h(`web_visuflow_text_${i}`);function at(i,t){const e=t.x-t.w/2,n=t.x+t.w/2,s=t.y-t.h/2,o=t.y+t.h/2;return i==="verzweigung"?v("path",{d:`M${t.x} ${s} L${n} ${t.y} L${t.x} ${o} L${e} ${t.y} Z`}):i==="ein"?v("path",{d:`M${e+14} ${s} L${n} ${s} L${n-14} ${o} L${e} ${o} Z`}):i==="unterprogramm"?v("path",{d:`M${e} ${s} H${n} V${o} H${e} Z M${e+10} ${s} V${o} M${n-10} ${s} V${o}`}):v("rect",{x:e,y:s,width:t.w,height:t.h,rx:i==="anweisung"?2:t.h/2})}function Bt(i){const t=v("text",{"text-anchor":"middle","font-size":Y,fill:B});return i.lines.forEach((e,n)=>{const s=v("tspan",{x:i.x,y:i.y+5+(n-(i.lines.length-1)/2)*H});s.textContent=e,t.append(s)}),t}function Q(i){const t=v("svg",{viewBox:"0 0 64 36",width:64,height:36,"aria-hidden":"true"}),e=at(i,{x:32,y:18,w:i==="verzweigung"?54:56,h:i==="verzweigung"?32:26});return e.setAttribute("fill",st[i]),e.setAttribute("stroke",B),e.setAttribute("stroke-width","1.5"),t.append(e),t.outerHTML}function tt(){let i=nt(h("web_visuflow_example_title"));const t=[],e=(p,f,l,c)=>{const g=q(i,p,f,l,c);i=g.doc,t.push(g.id)};e("start",240,60,T("start")),e("anweisung",240,160,h("web_visuflow_example_water")),e("anweisung",240,260,h("web_visuflow_example_bag")),e("verzweigung",240,380,h("web_visuflow_example_hot")),e("anweisung",480,380,h("web_visuflow_example_wait")),e("anweisung",240,500,h("web_visuflow_example_drink")),e("ende",240,600,T("ende"));const[n,s,o,r,a,d,u]=t;return i=_(i,n,"out",s),i=_(i,s,"out",o),i=_(i,o,"out",r),i=ot(i,r),i=_(i,r,"ja",a),i=_(i,a,"out",r),i=_(i,r,"nein",d),i=_(i,d,"out",u),i}function Tt(){return q(nt(),"start",240,60,T("start")).doc}class Dt{constructor(t){y(this,"shell");y(this,"svg");y(this,"scroller");y(this,"status");y(this,"titleInput");y(this,"doc");y(this,"selection");y(this,"history",[]);y(this,"future",[]);y(this,"editor");y(this,"dragLine");document.documentElement.classList.add("visuflow-theme"),history.replaceState(history.state,"",`${location.pathname}?visuflow${location.hash}`),this.doc=W(It(X)??"")??tt(),this.shell=document.createElement("div"),this.shell.className="shell visuflow",t.replaceWith(this.shell),this.build(),this.render(),window.addEventListener("keydown",e=>this.onKey(e))}build(){const t=(l,c,g,x=c)=>``,e=et.map(l=>``).join("");this.shell.innerHTML=`
VisuFlow ${w(h("web_visuflow_subtitle"))} @@ -28,7 +28,7 @@ var dt=Object.defineProperty;var lt=(i,t,e)=>t in i?dt(i,t,{enumerable:!0,config ${ht()}
- ${w(h("web_about_version_fmt").replace("%@","0.15.5"))} + ${w(h("web_about_version_fmt").replace("%@","0.15.6"))}
diff --git a/website/app/assets/index-_t0Bkwfx.js b/website/app/assets/index-COUsEkzk.js similarity index 92% rename from website/app/assets/index-_t0Bkwfx.js rename to website/app/assets/index-COUsEkzk.js index 4dcbba6f..9f6f612e 100644 --- a/website/app/assets/index-_t0Bkwfx.js +++ b/website/app/assets/index-COUsEkzk.js @@ -1,25 +1,25 @@ -var q2=Object.defineProperty;var Q2=(i,e,t)=>e in i?q2(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var y=(i,e,t)=>Q2(i,typeof e!="symbol"?e+"":e,t);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))n(a);new MutationObserver(a=>{for(const s of a)if(s.type==="childList")for(const r of s.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&n(r)}).observe(document,{childList:!0,subtree:!0});function t(a){const s={};return a.integrity&&(s.integrity=a.integrity),a.referrerPolicy&&(s.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?s.credentials="include":a.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function n(a){if(a.ep)return;a.ep=!0;const s=t(a);fetch(a.href,s)}})();const U2="modulepreload",Y2=function(i,e){return new URL(i,e).href},gu={},ee=function(e,t,n){let a=Promise.resolve();if(t&&t.length>0){let r=function(m){return Promise.all(m.map(c=>Promise.resolve(c).then(d=>({status:"fulfilled",value:d}),d=>({status:"rejected",reason:d}))))};const o=document.getElementsByTagName("link"),l=document.querySelector("meta[property=csp-nonce]"),u=(l==null?void 0:l.nonce)||(l==null?void 0:l.getAttribute("nonce"));a=r(t.map(m=>{if(m=Y2(m,n),m in gu)return;gu[m]=!0;const c=m.endsWith(".css"),d=c?'[rel="stylesheet"]':"";if(!!n)for(let f=o.length-1;f>=0;f--){const b=o[f];if(b.href===m&&(!c||b.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${m}"]${d}`))return;const g=document.createElement("link");if(g.rel=c?"stylesheet":U2,c||(g.as="script"),g.crossOrigin="",g.href=m,u&&g.setAttribute("nonce",u),document.head.appendChild(g),c)return new Promise((f,b)=>{g.addEventListener("load",f),g.addEventListener("error",()=>b(new Error(`Unable to preload CSS for ${m}`)))})}))}function s(r){const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=r,window.dispatchEvent(o),!o.defaultPrevented)throw r}return a.then(r=>{for(const o of r||[])o.status==="rejected"&&s(o.reason);return e().catch(s)})};var T=(i=>(i[i.anweisung=0]="anweisung",i[i.verzweigung=1]="verzweigung",i[i.fallauswahl=2]="fallauswahl",i[i.forSchleife=3]="forSchleife",i[i.whileSchleife=4]="whileSchleife",i[i.doUntilSchleife=5]="doUntilSchleife",i[i.endlosschleife=6]="endlosschleife",i[i.aussprung=7]="aussprung",i[i.aufruf=8]="aufruf",i[i.leerElement=9]="leerElement",i))(T||{});function $2(i){return i===3||i===4||i===5||i===6}function K2(i){return i===1||i===2}function Ce(i,e={}){return{type:i,zoomX:0,zoomY:0,textLines:[""],...e}}function X2(i){const e=i.textLines;if(!e.every(t=>t.trim()===""))switch(i.type){case T.forSchleife:return e.length<=1?e:[t3(e)];case T.verzweigung:return oa("if",e);case T.whileSchleife:return oa("while",e);case T.doUntilSchleife:return oa("while",e3(e));case T.fallauswahl:return oa("switch",e);default:return e}}function e3(i){if(i.length===0)return i;const e=i[0].trim(),t=e.toLowerCase(),n=[...i];if(t==="until")n[0]="";else if(t.startsWith("until "))n[0]=e.slice(6).trim();else if(t.startsWith("until("))n[0]=e.slice(5);else return i;return n}function pu(i){const e=new Set(["if","for","while","until","switch"]),t=["input:","output:","print:"],n=i.trim(),a=n.toLowerCase();for(const o of t){if(a===o)return{keyword:n,rest:""};if(a.startsWith(o+" "))return{keyword:n.slice(0,o.length),rest:n.slice(o.length).trim()}}const s=n.indexOf(" ");if(s<0)return;const r=n.slice(0,s);if(e.has(r.toLowerCase()))return{keyword:r,rest:n.slice(s+1).trim()}}function oa(i,e){if(e.length===0)return e;const t=e[0].trim(),n=t.toLowerCase();if(n===i||n.startsWith(i+" "))return e;const a=[...e];return a[0]=i+" "+t,a}function t3(i){let e=[...i];for(;e.length<3;)e.push("");e=e.slice(0,3);const t=a=>{let s=a.trim();for(;s.endsWith(";");)s=s.slice(0,-1).trim();return s},n=e.map(t).join("; ").trim();return n===""?"for":"for "+n}const lh={[T.anweisung]:"Anweisung",[T.verzweigung]:"Bedingung",[T.fallauswahl]:"Fallauswahl",[T.forSchleife]:"for 0 < i < anzahl",[T.whileSchleife]:"while …",[T.doUntilSchleife]:"while …",[T.endlosschleife]:"endless",[T.aussprung]:"break",[T.aufruf]:"Aufruf()",[T.leerElement]:"ø"};function n3(i){Object.assign(lh,i)}function $l(i){return X2(i)??[lh[i.type]]}const i3="visucode.de";function uh(i=location.hostname){const e=/^(visustruct|visubot|visuobject)\.visucode\.de$/.exec(i.toLowerCase());return e?e[1]:void 0}function a3(i){return i==="pt-PT"?"pt":i==="de"?"de":"en"}function s3(i,e,t,n=location){const a=a3(e),s=t?`#${t}`:"";return uh(n.hostname)===i&&/\/app\/(index\.html)?$/.test(n.pathname)?`../${a}/index.html${s}`:`https://${i}.${i3}/${a}/${s}`}class We extends Error{}const vn=i=>structuredClone(i);function sn(){return Ce(T.anweisung,{textLines:["ø"]})}function r3(){return{caption:"",elements:[sn()]}}function Kl(i){if(i.type===T.leerElement)return!0;if(i.type===T.anweisung){const e=i.textLines;return e.length===0||e.length===1&&e[0]==="ø"}return!1}function Sn(i,e){const t=yt(i,e);return t!==void 0&&Kl(t)}function $i(i,e){if(e.length===0)throw new We("Invalid element path.");const[t,...n]=e;if(t<0||t>=i.length)throw new We("Invalid element path.");if(n.length===0)return{list:i,index:t};const[a,...s]=n;if(s.length===0)throw new We("Invalid element path.");return $i(mh(i[t],a),s)}function mh(i,e){if($2(i.type)){if(e!==0||!i.loopBody)throw new We("Invalid element path.");return i.loopBody}if(K2(i.type)){if(!i.cases||e<0||e>=i.cases.length)throw new We("Invalid element path.");return i.cases[e].elements}throw new We("Invalid element path.")}function Ot(i,e){const{list:t,index:n}=$i(i.elements,e);return t[n]}function yt(i,e){try{return Ot(i,e)}catch{return}}function On(i,e,t){const n=vn(i),{list:a,index:s}=$i(n.elements,e);return a[s]=vn(t),n}function $1(i,e,t){const n=vn(Ot(i,e));return n.textLines=t.length===0?[""]:t,On(i,e,n)}function jr(i,e){return e.length===0?!1:e.length===1&&i.elements.length===1?!Sn(i,e):yt(i,e)!==void 0}function Pi(i,e){const t=vn(i),{list:n,index:a}=$i(t.elements,e);if(e.length===1&&n.length===1){if(Kl(n[0]))throw new We("The last root element cannot be deleted.");return n[0]=sn(),t}return n.splice(a,1),e.length>1&&n.length===0&&n.push(sn()),t}function pi(i,e,t,n){const a=vn(i);let s;if(e.length===0)s=a.elements;else{const r=e.slice(0,-1),o=e[e.length-1],{list:l,index:u}=$i(a.elements,r);s=mh(l[u],o)}return s.splice(Math.min(Math.max(0,t),s.length),0,vn(n)),a}function ch(i,e,t){if(t.length===0)throw new We("Invalid element path.");return pi(i,t.slice(0,-1),t[t.length-1],e)}function To(i,e,t){if(t.length===0)throw new We("Invalid element path.");return pi(i,t.slice(0,-1),t[t.length-1]+1,e)}function Xl(i,e){return i.lengthe[n]===t)}function e0(i,e){if(e.length===0)return i;const t=e[e.length-1],n=e.slice(0,-1);if(i.length<=n.length||!n.every((r,o)=>i[o]===r))return i;const a=n.length;if(i[a]<=t)return i;const s=[...i];return s[a]-=1,s}const t0=(i,e)=>i.length===e.length&&i.every((t,n)=>t===e[n]);function o3(i,e,t){if(t0(e,t))return i;if(Xl(e,t))throw new We("Invalid element path.");const n=Ot(i,e),a=Pi(i,e);return ch(a,n,e0(t,e))}function l3(i,e,t){if(t0(e,t))return i;if(Xl(e,t))throw new We("Invalid element path.");const n=Ot(i,e),a=Pi(i,e);return To(a,n,e0(t,e))}function u3(i,e,t){if(!Sn(i,t))throw new We("Invalid element path.");if(t0(e,t))return i;if(Xl(e,t))throw new We("Invalid element path.");const n=Ot(i,e),a=Pi(i,e);return On(a,e0(t,e),n)}function m3(i,e){const t=vn(Ot(i,e)),n=t.cases;if(t.type!==T.fallauswahl||!n||n.length===0)throw new We("Invalid element path.");const a=n[n.length-1].name.toLowerCase()==="default",s=a?n.length-1:n.length,r=String(a?n.length:n.length+1);return n.splice(s,0,{name:r,elements:[sn()]}),{doc:On(i,e,t),path:[...e,s,0]}}function c3(i,e,t){const n=vn(Ot(i,e)),a=n.cases;if(n.type!==T.fallauswahl||!a)throw new We("Invalid element path.");if(a.length<=2)throw new We("A switch needs at least two cases.");if(t<0||t>=a.length)throw new We("Invalid element path.");a.splice(t,1);const s=Math.min(t,a.length-1);return{doc:On(i,e,n),path:[...e,s,0]}}function d3(i,e,t,n){const a=vn(Ot(i,e)),s=a.cases;if(a.type!==T.fallauswahl||!s)throw new We("Invalid element path.");if(t<0||t>=s.length)throw new We("Invalid element path.");const r=n.trim();if(r==="")throw new We("Invalid element path.");return s[t].name=r,On(i,e,a)}function h3(i,e){var t;if(!(!i||i.length===0))for(let n=i.length;n>=1;n--){const a=i.slice(0,n);if(((t=yt(e,a))==null?void 0:t.type)===T.fallauswahl)return a}}function g3(i,e){if(!(!i||i.length<=e.length))return i[e.length]}function Cr(i,e){if(e.elements.length!==0)return!i||!yt(e,i)?[0]:i}const dh=i=>i!==void 0&&/\s/.test(i);function ms(i){const e=i.trim().toLowerCase();return e.startsWith("input:")?"input":e.startsWith("output:")||e.startsWith("print:")?"output":"statement"}function p3(i){const e=i.trim(),t=e.toLowerCase();return t.startsWith("input:")?e.slice(6).trim():t.startsWith("output:")?e.slice(7).trim():t.startsWith("print:")?e.slice(6).trim():i}function fu(i,e){const t=e.trim();return t===""?`${i} `:`${i} ${t}`}function f3(i,e){const t=p3(e);switch(i){case"statement":return t;case"input":return fu("input:",t);case"output":return fu("output:",t)}}const qa=i=>dh(i[0])?i.slice(1):i;function b3(i){const e=i.replace(/^\s+/,""),t=e.toLowerCase();return t.startsWith("input:")?qa(e.slice(6)):t.startsWith("output:")?qa(e.slice(7)):t.startsWith("print:")?qa(e.slice(6)):i}function bu(i,e){const t=e.replace(/^\s+/,"");if(!t.toLowerCase().startsWith(i.toLowerCase()))return e;const n=t.slice(i.length);if(!(n===""||dh(n[0])||n[0]==="("))return e;const a=qa(n);return a.startsWith("(")&&a.endsWith(")")&&a.length>=2?a.slice(1,-1):a}function xu(i,e){if(i==="input:"||i==="output:")return b3(e);const t=bu(i,e);if(i==="while"&&t===e){const n=bu("until",e);if(n!==e)return n}return t}function x3(i,e){return e===""?`${i} `:`${i} ${e}`}function hh(i){return i.replace(/[“”„«»]/g,'"').replace(/[’‘‚´]/g,"'")}function vu(i){const e=i.length===0?[""]:i.slice(0,3);for(;e.length<3;)e.push("");return e}function v3(i){let e=hh(i);for(;;){const t=e.trim();if(!t.endsWith(";"))return e;e=t.slice(0,-1).trim()}}const ar='system-ui, -apple-system, "Segoe UI", Roboto, sans-serif';function y3(i,e){return`${e==="bold"?700:500} ${i}px ${ar}`}const gh=(i,e,t)=>[...i].length*e*(t==="bold"?.68:.62);function w3(){if(typeof document>"u"||!document.body)return;const i="http://www.w3.org/2000/svg",e=document.createElementNS(i,"svg");e.setAttribute("aria-hidden","true"),e.setAttribute("width","0"),e.setAttribute("height","0"),e.style.cssText="position:absolute;left:-9999px;top:0;visibility:hidden;overflow:hidden";const t=document.createElementNS(i,"text");if(t.setAttribute("font-family",ar),t.style.whiteSpace="pre",e.append(t),document.body.append(e),typeof t.getComputedTextLength!="function"||typeof t.getBBox!="function"){e.remove();return}if(t.textContent="Mg",t.setAttribute("font-size","20"),!(t.getComputedTextLength()>0)){e.remove();return}return t}let Ar;function ph(){return Ar===void 0&&(Ar=w3()??null),Ar??void 0}function fh(i,e,t){i.setAttribute("font-size",String(e)),i.setAttribute("font-weight",t==="bold"?"700":"500")}function yu(i,e){const t=`${i}|${e}`;let n=wu.get(t);if(!n){const a=ph();if(n={ascent:i*.95,descent:i*.24},a){fh(a,i,e),a.setAttribute("y","0"),a.textContent="Mg";const s=a.getBBox();s.height>0&&(n={ascent:-s.y,descent:s.height+s.y})}wu.set(t,n)}return n}const wu=new Map;function z3(){const i=ph();if(i){const n=new Map;return(a,s,r)=>{const o=`${s}|${r}|${a}`;let l=n.get(o);return l===void 0&&(fh(i,s,r),i.textContent=a,l=a===""?0:i.getComputedTextLength(),n.size>2e3&&n.clear(),n.set(o,l)),l}}const e=typeof document<"u"?document.createElement("canvas").getContext("2d"):null;if(!e)return gh;const t=new Map;return(n,a,s)=>{const r=`${a}|${s}|${n}`;let o=t.get(r);return o===void 0&&(e.font=y3(a,s),o=e.measureText(n).width,t.size>2e3&&t.clear(),t.set(r,o)),o}}const bh={fontSize:15,lineHeight:20,charWidth:7,baseHeaderExtra:20,minSidePadding:42,cellTextInsetY:15,doUntilDoLabelTopInset:2,doUntilFooterTopInset:6,doUntilFooterBottomInset:8};function I3(i){return{...bh,fontSize:14,lineHeight:21,charWidth:5.5*(14/12),baseHeaderExtra:21,minSidePadding:40}}const la=i=>i===T.forSchleife||i===T.whileSchleife||i===T.doUntilSchleife||i===T.endlosschleife,ui=i=>i===T.fallauswahl||i===T.verzweigung;function ua(i,e,t,n=0){return{idPath:i,element:e,frame:t,headerBandHeight:n,topBandHeight:0,loopBodyLeadingInset:0,caseColumnFrames:[],children:[]}}function at(i){return{...i,frame:{...i.frame}}}class xh{constructor(e=bh,t=gh){this.metrics=e,this.measure=t}layout(e,t={left:28,top:28}){const a=this.layoutList(e.elements,t.left,t.top,[]).map(l=>this.stretchLoopBodiesVertically(l));let s=0,r=0;const o=l=>{s=Math.max(s,l.frame.x+l.frame.width),r=Math.max(r,l.frame.y+l.frame.height),l.children.forEach(o)};return a.forEach(o),{canvasSize:{width:s+t.left,height:r+t.top},elements:a}}lineWidth(e){return Math.ceil(this.measure(e,this.metrics.fontSize,"medium"))}lineWidthBold(e){return Math.ceil(this.measure(e,this.metrics.fontSize,"bold"))}layoutList(e,t,n,a){let s=[],r=n;e.forEach((l,u)=>{const m=this.layoutElement(l,t,r,[...a,u]);s.push(m),r+=m.frame.height});const o=Math.max(0,...s.map(l=>l.frame.width));return o>0&&(s=s.map(l=>this.stretchNodeTreeToWidth(l,o))),s}stretchMultiwayNodeToWidth(e,t){const n=at(e);if(n.caseColumnFrames.length===0)return n;const a=n.caseColumnFrames.reduce((l,u)=>l+u.width,0);if(!(a>0))return n;const s=t/a;n.frame.width=t;let r=n.frame.x;const o=n.caseColumnFrames.map(l=>{const u=l.width*s,m={x:r,y:l.y,width:u,height:l.height};return r+=u,m});return n.caseColumnFrames=o,n.dividerX=o.length>0?o[o.length-1].x:n.frame.x+t,n.columns&&n.columns.length===o.length&&(n.columns=n.columns.map((l,u)=>{const m=o[u];return l.map(c=>{const d=at(c);return d.frame.x=m.x,d.frame.width=m.width,this.stretchDescendantsWidths(d,m.width)})}),n.children=n.columns.flat()),n}stretchLoopChildren(e,t){const n=this.effectiveLoopBodyLeading(e),a=Math.max(0,t-n);e.children=e.children.map(s=>{const r=at(s);return r.frame.x=e.frame.x+n,r.frame.width=a,this.stretchDescendantsWidths(r,a)})}stretchNodeTreeToWidth(e,t){const n=at(e);return n.frame.width>0?ui(n.element.type)&&n.caseColumnFrames.length>0?this.stretchMultiwayNodeToWidth(n,t):(n.frame.width=t,la(n.element.type)?this.stretchLoopChildren(n,t):n.children=n.children.map(s=>this.stretchDescendantsWidths(s,t)),n):n}stretchDescendantsWidths(e,t){let n=at(e);return ui(n.element.type)?n=this.stretchNodeTreeToWidth(n,t):la(n.element.type)?(n.frame.width=t,this.stretchLoopChildren(n,t)):(n.frame.width=t,n.children=n.children.map(a=>this.stretchDescendantsWidths(a,t))),n}stretchLoopBodiesVertically(e){const t=at(e);if(t.columns&&t.columns.length>0)return t.columns=t.columns.map(s=>s.map(r=>this.stretchLoopBodiesVertically(r))),t.children=t.columns.flat(),t;t.children=t.children.map(s=>this.stretchLoopBodiesVertically(s));const n=s=>s===T.anweisung||s===T.leerElement||s===T.aufruf||s===T.aussprung||la(s);let a;switch(t.element.type){case T.forSchleife:case T.whileSchleife:case T.endlosschleife:{const s=t.element.type===T.endlosschleife?40:0;a=t.frame.y+t.frame.height-s;break}case T.doUntilSchleife:a=t.frame.y+t.frame.height-t.headerBandHeight;break}if(a!==void 0&&t.children.length>0){const s=t.children.length-1;let r=at(t.children[s]);const o=a-(r.frame.y+r.frame.height);o>.5&&n(r.element.type)&&(r.frame.height+=o,r=this.stretchLoopBodiesVertically(r),t.children=[...t.children.slice(0,s),r])}return t}headerHeight(e){const t=this.metrics,n=Math.max(1,e.textLines.length);if(e.type===T.doUntilSchleife)return t.doUntilFooterTopInset+n*t.lineHeight+t.doUntilFooterBottomInset+e.zoomY;let a;switch(e.type){case T.fallauswahl:a=40;break;case T.verzweigung:a=20;break;case T.forSchleife:case T.whileSchleife:case T.endlosschleife:a=t.baseHeaderExtra+4;break;default:a=14}return a+n*t.lineHeight+e.zoomY}doUntilBodyLeadingInset(){return Math.max(20,this.lineWidthBold("do")+12)}effectiveLoopBodyLeading(e){return e.element.type===T.doUntilSchleife?e.loopBodyLeadingInset>0?e.loopBodyLeadingInset:this.doUntilBodyLeadingInset():20}horizontalPaddingInsideCell(e){return ui(e)?Math.max(100,this.metrics.minSidePadding*2.45):this.metrics.minSidePadding}minWidth(e){const t=e.textLines.length===0?0:Math.max(...e.textLines.map(s=>this.lineWidth(s)));let n=t+e.zoomX+this.horizontalPaddingInsideCell(e.type);if(e.type===T.aufruf){const s=Math.max(68,this.metrics.minSidePadding*1.7),r=Math.max(8,this.metrics.minSidePadding*.2);n=Math.max(n,t+e.zoomX+s+r)}const a=e.type===T.leerElement?76:e.type===T.aufruf?104:72;return Math.max(a,n)}layoutElement(e,t,n,a){if(ui(e.type))return this.layoutMultiway(e,t,n,a);if(la(e.type))return this.layoutLoop(e,t,n,a);const s=this.headerHeight(e);return ua(a,e,{x:t,y:n,width:this.minWidth(e),height:s},s)}layoutLoop(e,t,n,a){const s=b=>b.reduce((x,v)=>x+v.frame.height,0),r=b=>Math.max(0,...b.map(x=>x.frame.width)),o=e.loopBody??[];if(e.type===T.doUntilSchleife){const b=this.doUntilBodyLeadingInset(),x=e.zoomY,v=this.headerHeight(e),w=this.layoutList(o,t+b,n+x,[...a,0]),z=Math.max(this.minWidth(e),r(w)+b),I=s(w)+v+x,S=Math.max(0,z-b),k=ua(a,e,{x:t,y:n,width:z,height:I},v);return k.topBandHeight=x,k.loopBodyLeadingInset=b,k.children=w.map(P=>{const D=at(P);return D.frame.x=t+b,D.frame.width=S,this.stretchDescendantsWidths(D,S)}),k}const l=20,u=this.headerHeight(e),m=e.type===T.endlosschleife?40:0,c=this.layoutList(o,t+l,n+u,[...a,0]),d=Math.max(this.minWidth(e),r(c)+l),h=u+m+s(c),g=Math.max(0,d-l),f=ua(a,e,{x:t,y:n,width:d,height:h},u);return f.children=c.map(b=>{const x=at(b);return x.frame.x=t+l,x.frame.width=g,this.stretchDescendantsWidths(x,g)}),f}layoutMultiway(e,t,n,a){const s=this.headerHeight(e),r=e.cases??[],o=Math.max(1,r.length),l=Math.max(this.minWidth(e)/o,132);let u=[],m=[],c=0,d=0;if(r.forEach((b,x)=>{const v=t+c,w=this.layoutList(b.elements,v,n+s,[...a,x]),z=Math.max(0,...w.map(k=>k.frame.width));let I;e.type===T.verzweigung&&o===2?I=Math.max(z,(x===0?"true":"false").length*this.metrics.charWidth+24):I=Math.max(l,z);const S=w.reduce((k,P)=>k+P.frame.height,0);d=Math.max(d,S),u.push({x:v,y:n+s,width:I,height:S}),m.push(w.map(k=>{const P=at(k);return P.frame.x=v,P.frame.width=I,this.stretchDescendantsWidths(P,I)})),c+=I}),e.type===T.verzweigung&&o===2&&u.length===2&&!r.some(b=>_o(b.elements))){const b=Math.max(u[0].width,u[1].width),x=t,v=t+b,w=v-u[1].x;u[0]={...u[0],x,width:b},u[1]={...u[1],x:v,width:b},c=b*2,m[0]=m[0].map(z=>{const I=at(z);return I.frame.x=x,I.frame.width=b,this.stretchDescendantsWidths(I,b)}),m[1]=m[1].map(z=>{const I=jo(z,w);return I.frame.width=b,this.stretchDescendantsWidths(I,b)})}if(m.length>0){const b=k3(m,n+s);m=b.columns.map(x=>x.map(v=>this.stretchLoopBodiesVertically(v)));for(let x=0;x0?Math.max(...b.columnHeights):d}let h=Math.max(c,this.minWidth(e));if(c>.5&&h>c+.5){const b=h/c;let x=t;const v=[],w=[];u.forEach((z,I)=>{const S=z.width*b;w.push(m[I].map(k=>{const P=at(k);return P.frame.x=x,P.frame.width=S,this.stretchDescendantsWidths(P,S)})),v.push({x,y:z.y,width:S,height:z.height}),x+=S}),u=v,m=w,c=x-t,h=c}const g=u.length>0?u[u.length-1].width:c/o,f=ua(a,e,{x:t,y:n,width:h,height:s+d},s);return f.caseColumnFrames=u,f.dividerX=u.length>0?u[u.length-1].x:t+c-g,f.dividerYInset=e.type===T.fallauswahl?-20:0,f.columns=m,f.children=m.flat(),f}}function _o(i){return i.some(e=>ui(e.type)||_o(e.loopBody??[])||(e.cases??[]).some(t=>_o(t.elements)))}function vh(i,e){if(Math.abs(e)<=1e-4)return i;const t=at(i),n=a=>{const s=at(a);return s.frame.y+=e,vh(s,e)};return t.columns?(t.columns=t.columns.map(a=>a.map(n)),t.children=t.columns.flat()):t.children=t.children.map(n),t}function jo(i,e){if(Math.abs(e)<=1e-4)return i;const t=at(i);return t.frame.x+=e,t.columns?(t.columns=t.columns.map(n=>n.map(a=>jo(a,e))),t.children=t.columns.flat()):t.children=t.children.map(n=>jo(n,e)),t}function k3(i,e){if(i.length<2)return{columns:i,columnHeights:i.map(u=>u.reduce((m,c)=>m+c.frame.height,0))};const t=.5,n=[e];for(const u of i)for(const m of u)n.push(m.frame.y+m.frame.height);const a=Math.max(...n);n.push(a),n.sort((u,m)=>u-m);let s=[];for(const u of n)s.length>0&&Math.abs(u-s[s.length-1])<=t||s.push(u);(s.length===0||Math.abs(s[0]-e)>t)&&s.unshift(e),s.length===0?s=[e,a]:s[s.length-1]{let c=Math.max(0,m);for(;c{let g=at(d);const f=s[c],b=d.frame.y+d.frame.height,x=h===u.length-1?s.length-1:r(b,c+1),v=s[x],w=f-g.frame.y;g.frame.y=f,g.frame.height=Math.max(0,v-f),g=vh(g,w),m.push(g),c=x}),o.push(m),l.push(s[s.length-1]-e)}return{columns:o,columnHeights:l}}const S3=[{item:"anweisung",label:"Anweisung"},{item:"verzweigung",label:"Verzweigung"},{item:"fallauswahl",label:"Fallauswahl"},{item:"forZaehlSchleife",label:"For-Schleife"},{item:"whileSchleife",label:"While-Schleife"},{item:"doUntilSchleife",label:"Do-while-Schleife"},{item:"endlosschleife",label:"Endlosschleife"},{item:"aufruf",label:"Aufruf"},{item:"aussprung",label:"Aussprung"}];function zu(i){const e=sn;switch(i){case"anweisung":return Ce(T.anweisung);case"verzweigung":return Ce(T.verzweigung,{cases:[{name:"true",elements:[e()]},{name:"false",elements:[e()]}]});case"fallauswahl":return Ce(T.fallauswahl,{cases:[{name:"1",elements:[e()]},{name:"2",elements:[e()]},{name:"default",elements:[e()]}]});case"forZaehlSchleife":return Ce(T.forSchleife,{textLines:["","",""],loopBody:[e()]});case"whileSchleife":return Ce(T.whileSchleife,{loopBody:[e()]});case"doUntilSchleife":return Ce(T.doUntilSchleife,{loopBody:[e()]});case"endlosschleife":return Ce(T.endlosschleife,{loopBody:[e()]});case"aussprung":return Ce(T.aussprung);case"aufruf":return Ce(T.aufruf)}}function cs(i){if(i==="")return"-1;";let e="";for(const t of i)e+=t.codePointAt(0)+";";return e}function Co(i){const e=i.split(";").filter(n=>n!=="");if(e.length===1&&e[0]==="-1")return"";let t="";for(const n of e){if(!/^[+-]?\d+$/.test(n))continue;const a=Number(n);a!==-1&&(a<0||a>1114111||a>=55296&&a<=57343||(t+=String.fromCodePoint(a)))}return t}class Iu extends Error{}function n0(i){const e=new DOMParser().parseFromString(i,"application/xml");if(e.getElementsByTagName("parsererror").length>0)throw new Iu("Could not read XML.");const t=e.documentElement;if(!t||t.tagName!=="struktogramm")throw new Iu("Invalid XML: root element is not .");const n={caption:Su(t,"caption")??"",elements:Po(t)},a=Su(t,"fontfamily");a!==void 0&&(n.fontFamily=a);const s=fi(t,"fontsize");s!==void 0&&(n.fontSize=s);const r=fi(t,"fontstyle");return r!==void 0&&(n.fontStyle=r),t.getAttribute("pseudocode")==="true"&&(n.pseudocode=!0),n}function d1(i){const e=(n,a)=>a===void 0?"":` ${n}="${yh(a)}"`;let t=` +var q2=Object.defineProperty;var Q2=(i,e,t)=>e in i?q2(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var y=(i,e,t)=>Q2(i,typeof e!="symbol"?e+"":e,t);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))n(a);new MutationObserver(a=>{for(const s of a)if(s.type==="childList")for(const r of s.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&n(r)}).observe(document,{childList:!0,subtree:!0});function t(a){const s={};return a.integrity&&(s.integrity=a.integrity),a.referrerPolicy&&(s.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?s.credentials="include":a.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function n(a){if(a.ep)return;a.ep=!0;const s=t(a);fetch(a.href,s)}})();const U2="modulepreload",Y2=function(i,e){return new URL(i,e).href},gu={},ee=function(e,t,n){let a=Promise.resolve();if(t&&t.length>0){let r=function(m){return Promise.all(m.map(c=>Promise.resolve(c).then(d=>({status:"fulfilled",value:d}),d=>({status:"rejected",reason:d}))))};const o=document.getElementsByTagName("link"),l=document.querySelector("meta[property=csp-nonce]"),u=(l==null?void 0:l.nonce)||(l==null?void 0:l.getAttribute("nonce"));a=r(t.map(m=>{if(m=Y2(m,n),m in gu)return;gu[m]=!0;const c=m.endsWith(".css"),d=c?'[rel="stylesheet"]':"";if(!!n)for(let f=o.length-1;f>=0;f--){const b=o[f];if(b.href===m&&(!c||b.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${m}"]${d}`))return;const g=document.createElement("link");if(g.rel=c?"stylesheet":U2,c||(g.as="script"),g.crossOrigin="",g.href=m,u&&g.setAttribute("nonce",u),document.head.appendChild(g),c)return new Promise((f,b)=>{g.addEventListener("load",f),g.addEventListener("error",()=>b(new Error(`Unable to preload CSS for ${m}`)))})}))}function s(r){const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=r,window.dispatchEvent(o),!o.defaultPrevented)throw r}return a.then(r=>{for(const o of r||[])o.status==="rejected"&&s(o.reason);return e().catch(s)})};var T=(i=>(i[i.anweisung=0]="anweisung",i[i.verzweigung=1]="verzweigung",i[i.fallauswahl=2]="fallauswahl",i[i.forSchleife=3]="forSchleife",i[i.whileSchleife=4]="whileSchleife",i[i.doUntilSchleife=5]="doUntilSchleife",i[i.endlosschleife=6]="endlosschleife",i[i.aussprung=7]="aussprung",i[i.aufruf=8]="aufruf",i[i.leerElement=9]="leerElement",i))(T||{});function $2(i){return i===3||i===4||i===5||i===6}function K2(i){return i===1||i===2}function Ae(i,e={}){return{type:i,zoomX:0,zoomY:0,textLines:[""],...e}}function X2(i){const e=i.textLines;if(!e.every(t=>t.trim()===""))switch(i.type){case T.forSchleife:return e.length<=1?e:[t3(e)];case T.verzweigung:return oa("if",e);case T.whileSchleife:return oa("while",e);case T.doUntilSchleife:return oa("while",e3(e));case T.fallauswahl:return oa("switch",e);default:return e}}function e3(i){if(i.length===0)return i;const e=i[0].trim(),t=e.toLowerCase(),n=[...i];if(t==="until")n[0]="";else if(t.startsWith("until "))n[0]=e.slice(6).trim();else if(t.startsWith("until("))n[0]=e.slice(5);else return i;return n}function pu(i){const e=new Set(["if","for","while","until","switch"]),t=["input:","output:","print:"],n=i.trim(),a=n.toLowerCase();for(const o of t){if(a===o)return{keyword:n,rest:""};if(a.startsWith(o+" "))return{keyword:n.slice(0,o.length),rest:n.slice(o.length).trim()}}const s=n.indexOf(" ");if(s<0)return;const r=n.slice(0,s);if(e.has(r.toLowerCase()))return{keyword:r,rest:n.slice(s+1).trim()}}function oa(i,e){if(e.length===0)return e;const t=e[0].trim(),n=t.toLowerCase();if(n===i||n.startsWith(i+" "))return e;const a=[...e];return a[0]=i+" "+t,a}function t3(i){let e=[...i];for(;e.length<3;)e.push("");e=e.slice(0,3);const t=a=>{let s=a.trim();for(;s.endsWith(";");)s=s.slice(0,-1).trim();return s},n=e.map(t).join("; ").trim();return n===""?"for":"for "+n}const lh={[T.anweisung]:"Anweisung",[T.verzweigung]:"Bedingung",[T.fallauswahl]:"Fallauswahl",[T.forSchleife]:"for 0 < i < anzahl",[T.whileSchleife]:"while …",[T.doUntilSchleife]:"while …",[T.endlosschleife]:"endless",[T.aussprung]:"break",[T.aufruf]:"Aufruf()",[T.leerElement]:"ø"};function n3(i){Object.assign(lh,i)}function $l(i){return X2(i)??[lh[i.type]]}const i3="visucode.de";function uh(i=location.hostname){const e=/^(visustruct|visubot|visuobject)\.visucode\.de$/.exec(i.toLowerCase());return e?e[1]:void 0}function a3(i){return i==="pt-PT"?"pt":i==="de"?"de":"en"}function s3(i,e,t,n=location){const a=a3(e),s=t?`#${t}`:"";return uh(n.hostname)===i&&/\/app\/(index\.html)?$/.test(n.pathname)?`../${a}/index.html${s}`:`https://${i}.${i3}/${a}/${s}`}class We extends Error{}const vn=i=>structuredClone(i);function sn(){return Ae(T.anweisung,{textLines:["ø"]})}function r3(){return{caption:"",elements:[sn()]}}function Kl(i){if(i.type===T.leerElement)return!0;if(i.type===T.anweisung){const e=i.textLines;return e.length===0||e.length===1&&e[0]==="ø"}return!1}function Sn(i,e){const t=yt(i,e);return t!==void 0&&Kl(t)}function $i(i,e){if(e.length===0)throw new We("Invalid element path.");const[t,...n]=e;if(t<0||t>=i.length)throw new We("Invalid element path.");if(n.length===0)return{list:i,index:t};const[a,...s]=n;if(s.length===0)throw new We("Invalid element path.");return $i(mh(i[t],a),s)}function mh(i,e){if($2(i.type)){if(e!==0||!i.loopBody)throw new We("Invalid element path.");return i.loopBody}if(K2(i.type)){if(!i.cases||e<0||e>=i.cases.length)throw new We("Invalid element path.");return i.cases[e].elements}throw new We("Invalid element path.")}function Ot(i,e){const{list:t,index:n}=$i(i.elements,e);return t[n]}function yt(i,e){try{return Ot(i,e)}catch{return}}function On(i,e,t){const n=vn(i),{list:a,index:s}=$i(n.elements,e);return a[s]=vn(t),n}function $1(i,e,t){const n=vn(Ot(i,e));return n.textLines=t.length===0?[""]:t,On(i,e,n)}function jr(i,e){return e.length===0?!1:e.length===1&&i.elements.length===1?!Sn(i,e):yt(i,e)!==void 0}function Di(i,e){const t=vn(i),{list:n,index:a}=$i(t.elements,e);if(e.length===1&&n.length===1){if(Kl(n[0]))throw new We("The last root element cannot be deleted.");return n[0]=sn(),t}return n.splice(a,1),e.length>1&&n.length===0&&n.push(sn()),t}function pi(i,e,t,n){const a=vn(i);let s;if(e.length===0)s=a.elements;else{const r=e.slice(0,-1),o=e[e.length-1],{list:l,index:u}=$i(a.elements,r);s=mh(l[u],o)}return s.splice(Math.min(Math.max(0,t),s.length),0,vn(n)),a}function ch(i,e,t){if(t.length===0)throw new We("Invalid element path.");return pi(i,t.slice(0,-1),t[t.length-1],e)}function To(i,e,t){if(t.length===0)throw new We("Invalid element path.");return pi(i,t.slice(0,-1),t[t.length-1]+1,e)}function Xl(i,e){return i.lengthe[n]===t)}function e0(i,e){if(e.length===0)return i;const t=e[e.length-1],n=e.slice(0,-1);if(i.length<=n.length||!n.every((r,o)=>i[o]===r))return i;const a=n.length;if(i[a]<=t)return i;const s=[...i];return s[a]-=1,s}const t0=(i,e)=>i.length===e.length&&i.every((t,n)=>t===e[n]);function o3(i,e,t){if(t0(e,t))return i;if(Xl(e,t))throw new We("Invalid element path.");const n=Ot(i,e),a=Di(i,e);return ch(a,n,e0(t,e))}function l3(i,e,t){if(t0(e,t))return i;if(Xl(e,t))throw new We("Invalid element path.");const n=Ot(i,e),a=Di(i,e);return To(a,n,e0(t,e))}function u3(i,e,t){if(!Sn(i,t))throw new We("Invalid element path.");if(t0(e,t))return i;if(Xl(e,t))throw new We("Invalid element path.");const n=Ot(i,e),a=Di(i,e);return On(a,e0(t,e),n)}function m3(i,e){const t=vn(Ot(i,e)),n=t.cases;if(t.type!==T.fallauswahl||!n||n.length===0)throw new We("Invalid element path.");const a=n[n.length-1].name.toLowerCase()==="default",s=a?n.length-1:n.length,r=String(a?n.length:n.length+1);return n.splice(s,0,{name:r,elements:[sn()]}),{doc:On(i,e,t),path:[...e,s,0]}}function c3(i,e,t){const n=vn(Ot(i,e)),a=n.cases;if(n.type!==T.fallauswahl||!a)throw new We("Invalid element path.");if(a.length<=2)throw new We("A switch needs at least two cases.");if(t<0||t>=a.length)throw new We("Invalid element path.");a.splice(t,1);const s=Math.min(t,a.length-1);return{doc:On(i,e,n),path:[...e,s,0]}}function d3(i,e,t,n){const a=vn(Ot(i,e)),s=a.cases;if(a.type!==T.fallauswahl||!s)throw new We("Invalid element path.");if(t<0||t>=s.length)throw new We("Invalid element path.");const r=n.trim();if(r==="")throw new We("Invalid element path.");return s[t].name=r,On(i,e,a)}function h3(i,e){var t;if(!(!i||i.length===0))for(let n=i.length;n>=1;n--){const a=i.slice(0,n);if(((t=yt(e,a))==null?void 0:t.type)===T.fallauswahl)return a}}function g3(i,e){if(!(!i||i.length<=e.length))return i[e.length]}function Ar(i,e){if(e.elements.length!==0)return!i||!yt(e,i)?[0]:i}const dh=i=>i!==void 0&&/\s/.test(i);function ms(i){const e=i.trim().toLowerCase();return e.startsWith("input:")?"input":e.startsWith("output:")||e.startsWith("print:")?"output":"statement"}function p3(i){const e=i.trim(),t=e.toLowerCase();return t.startsWith("input:")?e.slice(6).trim():t.startsWith("output:")?e.slice(7).trim():t.startsWith("print:")?e.slice(6).trim():i}function fu(i,e){const t=e.trim();return t===""?`${i} `:`${i} ${t}`}function f3(i,e){const t=p3(e);switch(i){case"statement":return t;case"input":return fu("input:",t);case"output":return fu("output:",t)}}const qa=i=>dh(i[0])?i.slice(1):i;function b3(i){const e=i.replace(/^\s+/,""),t=e.toLowerCase();return t.startsWith("input:")?qa(e.slice(6)):t.startsWith("output:")?qa(e.slice(7)):t.startsWith("print:")?qa(e.slice(6)):i}function bu(i,e){const t=e.replace(/^\s+/,"");if(!t.toLowerCase().startsWith(i.toLowerCase()))return e;const n=t.slice(i.length);if(!(n===""||dh(n[0])||n[0]==="("))return e;const a=qa(n);return a.startsWith("(")&&a.endsWith(")")&&a.length>=2?a.slice(1,-1):a}function xu(i,e){if(i==="input:"||i==="output:")return b3(e);const t=bu(i,e);if(i==="while"&&t===e){const n=bu("until",e);if(n!==e)return n}return t}function x3(i,e){return e===""?`${i} `:`${i} ${e}`}function hh(i){return i.replace(/[“”„«»]/g,'"').replace(/[’‘‚´]/g,"'")}function vu(i){const e=i.length===0?[""]:i.slice(0,3);for(;e.length<3;)e.push("");return e}function v3(i){let e=hh(i);for(;;){const t=e.trim();if(!t.endsWith(";"))return e;e=t.slice(0,-1).trim()}}const ar='system-ui, -apple-system, "Segoe UI", Roboto, sans-serif';function y3(i,e){return`${e==="bold"?700:500} ${i}px ${ar}`}const gh=(i,e,t)=>[...i].length*e*(t==="bold"?.68:.62);function w3(){if(typeof document>"u"||!document.body)return;const i="http://www.w3.org/2000/svg",e=document.createElementNS(i,"svg");e.setAttribute("aria-hidden","true"),e.setAttribute("width","0"),e.setAttribute("height","0"),e.style.cssText="position:absolute;left:-9999px;top:0;visibility:hidden;overflow:hidden";const t=document.createElementNS(i,"text");if(t.setAttribute("font-family",ar),t.style.whiteSpace="pre",e.append(t),document.body.append(e),typeof t.getComputedTextLength!="function"||typeof t.getBBox!="function"){e.remove();return}if(t.textContent="Mg",t.setAttribute("font-size","20"),!(t.getComputedTextLength()>0)){e.remove();return}return t}let Cr;function ph(){return Cr===void 0&&(Cr=w3()??null),Cr??void 0}function fh(i,e,t){i.setAttribute("font-size",String(e)),i.setAttribute("font-weight",t==="bold"?"700":"500")}function yu(i,e){const t=`${i}|${e}`;let n=wu.get(t);if(!n){const a=ph();if(n={ascent:i*.95,descent:i*.24},a){fh(a,i,e),a.setAttribute("y","0"),a.textContent="Mg";const s=a.getBBox();s.height>0&&(n={ascent:-s.y,descent:s.height+s.y})}wu.set(t,n)}return n}const wu=new Map;function z3(){const i=ph();if(i){const n=new Map;return(a,s,r)=>{const o=`${s}|${r}|${a}`;let l=n.get(o);return l===void 0&&(fh(i,s,r),i.textContent=a,l=a===""?0:i.getComputedTextLength(),n.size>2e3&&n.clear(),n.set(o,l)),l}}const e=typeof document<"u"?document.createElement("canvas").getContext("2d"):null;if(!e)return gh;const t=new Map;return(n,a,s)=>{const r=`${a}|${s}|${n}`;let o=t.get(r);return o===void 0&&(e.font=y3(a,s),o=e.measureText(n).width,t.size>2e3&&t.clear(),t.set(r,o)),o}}const bh={fontSize:15,lineHeight:20,charWidth:7,baseHeaderExtra:20,minSidePadding:42,cellTextInsetY:15,doUntilDoLabelTopInset:2,doUntilFooterTopInset:6,doUntilFooterBottomInset:8};function I3(i){return{...bh,fontSize:14,lineHeight:21,charWidth:5.5*(14/12),baseHeaderExtra:21,minSidePadding:40}}const la=i=>i===T.forSchleife||i===T.whileSchleife||i===T.doUntilSchleife||i===T.endlosschleife,ui=i=>i===T.fallauswahl||i===T.verzweigung;function ua(i,e,t,n=0){return{idPath:i,element:e,frame:t,headerBandHeight:n,topBandHeight:0,loopBodyLeadingInset:0,caseColumnFrames:[],children:[]}}function at(i){return{...i,frame:{...i.frame}}}class xh{constructor(e=bh,t=gh){this.metrics=e,this.measure=t}layout(e,t={left:28,top:28}){const a=this.layoutList(e.elements,t.left,t.top,[]).map(l=>this.stretchLoopBodiesVertically(l));let s=0,r=0;const o=l=>{s=Math.max(s,l.frame.x+l.frame.width),r=Math.max(r,l.frame.y+l.frame.height),l.children.forEach(o)};return a.forEach(o),{canvasSize:{width:s+t.left,height:r+t.top},elements:a}}lineWidth(e){return Math.ceil(this.measure(e,this.metrics.fontSize,"medium"))}lineWidthBold(e){return Math.ceil(this.measure(e,this.metrics.fontSize,"bold"))}layoutList(e,t,n,a){let s=[],r=n;e.forEach((l,u)=>{const m=this.layoutElement(l,t,r,[...a,u]);s.push(m),r+=m.frame.height});const o=Math.max(0,...s.map(l=>l.frame.width));return o>0&&(s=s.map(l=>this.stretchNodeTreeToWidth(l,o))),s}stretchMultiwayNodeToWidth(e,t){const n=at(e);if(n.caseColumnFrames.length===0)return n;const a=n.caseColumnFrames.reduce((l,u)=>l+u.width,0);if(!(a>0))return n;const s=t/a;n.frame.width=t;let r=n.frame.x;const o=n.caseColumnFrames.map(l=>{const u=l.width*s,m={x:r,y:l.y,width:u,height:l.height};return r+=u,m});return n.caseColumnFrames=o,n.dividerX=o.length>0?o[o.length-1].x:n.frame.x+t,n.columns&&n.columns.length===o.length&&(n.columns=n.columns.map((l,u)=>{const m=o[u];return l.map(c=>{const d=at(c);return d.frame.x=m.x,d.frame.width=m.width,this.stretchDescendantsWidths(d,m.width)})}),n.children=n.columns.flat()),n}stretchLoopChildren(e,t){const n=this.effectiveLoopBodyLeading(e),a=Math.max(0,t-n);e.children=e.children.map(s=>{const r=at(s);return r.frame.x=e.frame.x+n,r.frame.width=a,this.stretchDescendantsWidths(r,a)})}stretchNodeTreeToWidth(e,t){const n=at(e);return n.frame.width>0?ui(n.element.type)&&n.caseColumnFrames.length>0?this.stretchMultiwayNodeToWidth(n,t):(n.frame.width=t,la(n.element.type)?this.stretchLoopChildren(n,t):n.children=n.children.map(s=>this.stretchDescendantsWidths(s,t)),n):n}stretchDescendantsWidths(e,t){let n=at(e);return ui(n.element.type)?n=this.stretchNodeTreeToWidth(n,t):la(n.element.type)?(n.frame.width=t,this.stretchLoopChildren(n,t)):(n.frame.width=t,n.children=n.children.map(a=>this.stretchDescendantsWidths(a,t))),n}stretchLoopBodiesVertically(e){const t=at(e);if(t.columns&&t.columns.length>0)return t.columns=t.columns.map(s=>s.map(r=>this.stretchLoopBodiesVertically(r))),t.children=t.columns.flat(),t;t.children=t.children.map(s=>this.stretchLoopBodiesVertically(s));const n=s=>s===T.anweisung||s===T.leerElement||s===T.aufruf||s===T.aussprung||la(s);let a;switch(t.element.type){case T.forSchleife:case T.whileSchleife:case T.endlosschleife:{const s=t.element.type===T.endlosschleife?40:0;a=t.frame.y+t.frame.height-s;break}case T.doUntilSchleife:a=t.frame.y+t.frame.height-t.headerBandHeight;break}if(a!==void 0&&t.children.length>0){const s=t.children.length-1;let r=at(t.children[s]);const o=a-(r.frame.y+r.frame.height);o>.5&&n(r.element.type)&&(r.frame.height+=o,r=this.stretchLoopBodiesVertically(r),t.children=[...t.children.slice(0,s),r])}return t}headerHeight(e){const t=this.metrics,n=Math.max(1,e.textLines.length);if(e.type===T.doUntilSchleife)return t.doUntilFooterTopInset+n*t.lineHeight+t.doUntilFooterBottomInset+e.zoomY;let a;switch(e.type){case T.fallauswahl:a=40;break;case T.verzweigung:a=20;break;case T.forSchleife:case T.whileSchleife:case T.endlosschleife:a=t.baseHeaderExtra+4;break;default:a=14}return a+n*t.lineHeight+e.zoomY}doUntilBodyLeadingInset(){return Math.max(20,this.lineWidthBold("do")+12)}effectiveLoopBodyLeading(e){return e.element.type===T.doUntilSchleife?e.loopBodyLeadingInset>0?e.loopBodyLeadingInset:this.doUntilBodyLeadingInset():20}horizontalPaddingInsideCell(e){return ui(e)?Math.max(100,this.metrics.minSidePadding*2.45):this.metrics.minSidePadding}minWidth(e){const t=e.textLines.length===0?0:Math.max(...e.textLines.map(s=>this.lineWidth(s)));let n=t+e.zoomX+this.horizontalPaddingInsideCell(e.type);if(e.type===T.aufruf){const s=Math.max(68,this.metrics.minSidePadding*1.7),r=Math.max(8,this.metrics.minSidePadding*.2);n=Math.max(n,t+e.zoomX+s+r)}const a=e.type===T.leerElement?76:e.type===T.aufruf?104:72;return Math.max(a,n)}layoutElement(e,t,n,a){if(ui(e.type))return this.layoutMultiway(e,t,n,a);if(la(e.type))return this.layoutLoop(e,t,n,a);const s=this.headerHeight(e);return ua(a,e,{x:t,y:n,width:this.minWidth(e),height:s},s)}layoutLoop(e,t,n,a){const s=b=>b.reduce((x,v)=>x+v.frame.height,0),r=b=>Math.max(0,...b.map(x=>x.frame.width)),o=e.loopBody??[];if(e.type===T.doUntilSchleife){const b=this.doUntilBodyLeadingInset(),x=e.zoomY,v=this.headerHeight(e),w=this.layoutList(o,t+b,n+x,[...a,0]),z=Math.max(this.minWidth(e),r(w)+b),I=s(w)+v+x,S=Math.max(0,z-b),k=ua(a,e,{x:t,y:n,width:z,height:I},v);return k.topBandHeight=x,k.loopBodyLeadingInset=b,k.children=w.map(D=>{const P=at(D);return P.frame.x=t+b,P.frame.width=S,this.stretchDescendantsWidths(P,S)}),k}const l=20,u=this.headerHeight(e),m=e.type===T.endlosschleife?40:0,c=this.layoutList(o,t+l,n+u,[...a,0]),d=Math.max(this.minWidth(e),r(c)+l),h=u+m+s(c),g=Math.max(0,d-l),f=ua(a,e,{x:t,y:n,width:d,height:h},u);return f.children=c.map(b=>{const x=at(b);return x.frame.x=t+l,x.frame.width=g,this.stretchDescendantsWidths(x,g)}),f}layoutMultiway(e,t,n,a){const s=this.headerHeight(e),r=e.cases??[],o=Math.max(1,r.length),l=Math.max(this.minWidth(e)/o,132);let u=[],m=[],c=0,d=0;if(r.forEach((b,x)=>{const v=t+c,w=this.layoutList(b.elements,v,n+s,[...a,x]),z=Math.max(0,...w.map(k=>k.frame.width));let I;e.type===T.verzweigung&&o===2?I=Math.max(z,(x===0?"true":"false").length*this.metrics.charWidth+24):I=Math.max(l,z);const S=w.reduce((k,D)=>k+D.frame.height,0);d=Math.max(d,S),u.push({x:v,y:n+s,width:I,height:S}),m.push(w.map(k=>{const D=at(k);return D.frame.x=v,D.frame.width=I,this.stretchDescendantsWidths(D,I)})),c+=I}),e.type===T.verzweigung&&o===2&&u.length===2&&!r.some(b=>_o(b.elements))){const b=Math.max(u[0].width,u[1].width),x=t,v=t+b,w=v-u[1].x;u[0]={...u[0],x,width:b},u[1]={...u[1],x:v,width:b},c=b*2,m[0]=m[0].map(z=>{const I=at(z);return I.frame.x=x,I.frame.width=b,this.stretchDescendantsWidths(I,b)}),m[1]=m[1].map(z=>{const I=jo(z,w);return I.frame.width=b,this.stretchDescendantsWidths(I,b)})}if(m.length>0){const b=k3(m,n+s);m=b.columns.map(x=>x.map(v=>this.stretchLoopBodiesVertically(v)));for(let x=0;x0?Math.max(...b.columnHeights):d}let h=Math.max(c,this.minWidth(e));if(c>.5&&h>c+.5){const b=h/c;let x=t;const v=[],w=[];u.forEach((z,I)=>{const S=z.width*b;w.push(m[I].map(k=>{const D=at(k);return D.frame.x=x,D.frame.width=S,this.stretchDescendantsWidths(D,S)})),v.push({x,y:z.y,width:S,height:z.height}),x+=S}),u=v,m=w,c=x-t,h=c}const g=u.length>0?u[u.length-1].width:c/o,f=ua(a,e,{x:t,y:n,width:h,height:s+d},s);return f.caseColumnFrames=u,f.dividerX=u.length>0?u[u.length-1].x:t+c-g,f.dividerYInset=e.type===T.fallauswahl?-20:0,f.columns=m,f.children=m.flat(),f}}function _o(i){return i.some(e=>ui(e.type)||_o(e.loopBody??[])||(e.cases??[]).some(t=>_o(t.elements)))}function vh(i,e){if(Math.abs(e)<=1e-4)return i;const t=at(i),n=a=>{const s=at(a);return s.frame.y+=e,vh(s,e)};return t.columns?(t.columns=t.columns.map(a=>a.map(n)),t.children=t.columns.flat()):t.children=t.children.map(n),t}function jo(i,e){if(Math.abs(e)<=1e-4)return i;const t=at(i);return t.frame.x+=e,t.columns?(t.columns=t.columns.map(n=>n.map(a=>jo(a,e))),t.children=t.columns.flat()):t.children=t.children.map(n=>jo(n,e)),t}function k3(i,e){if(i.length<2)return{columns:i,columnHeights:i.map(u=>u.reduce((m,c)=>m+c.frame.height,0))};const t=.5,n=[e];for(const u of i)for(const m of u)n.push(m.frame.y+m.frame.height);const a=Math.max(...n);n.push(a),n.sort((u,m)=>u-m);let s=[];for(const u of n)s.length>0&&Math.abs(u-s[s.length-1])<=t||s.push(u);(s.length===0||Math.abs(s[0]-e)>t)&&s.unshift(e),s.length===0?s=[e,a]:s[s.length-1]{let c=Math.max(0,m);for(;c{let g=at(d);const f=s[c],b=d.frame.y+d.frame.height,x=h===u.length-1?s.length-1:r(b,c+1),v=s[x],w=f-g.frame.y;g.frame.y=f,g.frame.height=Math.max(0,v-f),g=vh(g,w),m.push(g),c=x}),o.push(m),l.push(s[s.length-1]-e)}return{columns:o,columnHeights:l}}const S3=[{item:"anweisung",label:"Anweisung"},{item:"verzweigung",label:"Verzweigung"},{item:"fallauswahl",label:"Fallauswahl"},{item:"forZaehlSchleife",label:"For-Schleife"},{item:"whileSchleife",label:"While-Schleife"},{item:"doUntilSchleife",label:"Do-while-Schleife"},{item:"endlosschleife",label:"Endlosschleife"},{item:"aufruf",label:"Aufruf"},{item:"aussprung",label:"Aussprung"}];function zu(i){const e=sn;switch(i){case"anweisung":return Ae(T.anweisung);case"verzweigung":return Ae(T.verzweigung,{cases:[{name:"true",elements:[e()]},{name:"false",elements:[e()]}]});case"fallauswahl":return Ae(T.fallauswahl,{cases:[{name:"1",elements:[e()]},{name:"2",elements:[e()]},{name:"default",elements:[e()]}]});case"forZaehlSchleife":return Ae(T.forSchleife,{textLines:["","",""],loopBody:[e()]});case"whileSchleife":return Ae(T.whileSchleife,{loopBody:[e()]});case"doUntilSchleife":return Ae(T.doUntilSchleife,{loopBody:[e()]});case"endlosschleife":return Ae(T.endlosschleife,{loopBody:[e()]});case"aussprung":return Ae(T.aussprung);case"aufruf":return Ae(T.aufruf)}}function cs(i){if(i==="")return"-1;";let e="";for(const t of i)e+=t.codePointAt(0)+";";return e}function Ao(i){const e=i.split(";").filter(n=>n!=="");if(e.length===1&&e[0]==="-1")return"";let t="";for(const n of e){if(!/^[+-]?\d+$/.test(n))continue;const a=Number(n);a!==-1&&(a<0||a>1114111||a>=55296&&a<=57343||(t+=String.fromCodePoint(a)))}return t}class Iu extends Error{}function n0(i){const e=new DOMParser().parseFromString(i,"application/xml");if(e.getElementsByTagName("parsererror").length>0)throw new Iu("Could not read XML.");const t=e.documentElement;if(!t||t.tagName!=="struktogramm")throw new Iu("Invalid XML: root element is not .");const n={caption:Su(t,"caption")??"",elements:Do(t)},a=Su(t,"fontfamily");a!==void 0&&(n.fontFamily=a);const s=fi(t,"fontsize");s!==void 0&&(n.fontSize=s);const r=fi(t,"fontstyle");return r!==void 0&&(n.fontStyle=r),t.getAttribute("pseudocode")==="true"&&(n.pseudocode=!0),n}function d1(i){const e=(n,a)=>a===void 0?"":` ${n}="${yh(a)}"`;let t=` `;t+=" -`;for(const n of i.elements)t+=Ao(n," ");return t+=` -`,t}function Ao(i,e){let t=`${e} +`;for(const n of i.elements)t+=Co(n," ");return t+=` +`,t}function Co(i,e){let t=`${e} `;for(const n of i.textLines)t+=`${e} ${T3(cs(n))} `;if(i.loopBody){t+=`${e} -`;for(const n of i.loopBody)t+=Ao(n,e+" ");t+=`${e} +`;for(const n of i.loopBody)t+=Co(n,e+" ");t+=`${e} `}if(i.cases)for(const n of i.cases){t+=`${e} -`;for(const a of n.elements)t+=Ao(a,e+" ");t+=`${e} +`;for(const a of n.elements)t+=Co(a,e+" ");t+=`${e} `}return t+=`${e} -`,t}function yh(i){return i.replace(/&/g,"&").replace(/"/g,""").replace(//g,">")}function T3(i){return i.replace(/&/g,"&").replace(//g,">")}function ku(i){return String(i.a<<24|i.r<<16|i.g<<8|i.b|0)}function Qa(i,e){return Array.from(i.children).filter(t=>t.tagName===e)}function Po(i){const e=[];for(const t of Qa(i,"strelem")){const n=_3(t);n&&e.push(n)}return e}function _3(i){const e=fi(i,"typ");if(e===void 0||T[e]===void 0)return;const t={type:e,zoomX:fi(i,"zx")??0,zoomY:fi(i,"zy")??0,textLines:Qa(i,"text").map(o=>Co((o.textContent??"").trim()))},n=Tu(i.getAttribute("textcolor"));n&&(t.textColor=n);const a=Tu(i.getAttribute("bgcolor"));a&&(t.backgroundColor=a),t.textLines.length===0&&(t.textLines=[""]);const s=Qa(i,"schleifeninhalt")[0];if(s){const o=Po(s);o.length>0&&(t.loopBody=o)}const r=Qa(i,"fall").map(o=>({name:Co(o.getAttribute("fallname")??""),elements:Po(o)}));return r.length>0&&(t.cases=r),t}function Su(i,e){const t=i.getAttribute(e);return t===null?void 0:Co(t)}function fi(i,e){const t=i.getAttribute(e);if(!(t===null||!/^[+-]?\d+$/.test(t)))return Number(t)}function Tu(i){if(i===null||!/^[+-]?\d+$/.test(i))return;const e=Number(i);if(e<-2147483648||e>2147483647)return;const t=e>>>0;return{a:t>>>24&255,r:t>>>16&255,g:t>>>8&255,b:t&255}}const j3="http://www.w3.org/2000/svg",Ee={diagramLineWidth:2,outerFrameLineWidth:2,selectionLineWidth:3.5,canvasOuterMargin:16,cellTextInsetX:18,cellTextInsetY:15,multiHeaderFirstLineY:14,branchLabelInsetX:10,fallauswahlCaseLabelBand:26,callSideBarInset:14,callTextInsetFromSideBar:20,loopBodyLeadingInset:20};function wh(i){switch(i){case T.forSchleife:case T.whileSchleife:case T.doUntilSchleife:case T.endlosschleife:return"loop";case T.verzweigung:case T.fallauswahl:return"if";default:return}}function Te(i,e={}){const t=document.createElementNS(j3,i);for(const[n,a]of Object.entries(e))t.setAttribute(n,String(a));return t}class zh{constructor(e,t){y(this,"usesSimulationHighlight",!1);y(this,"fillsSelection",!1);this.metrics=e,this.measure=t}get lineHeight(){return this.metrics.lineHeight}get fontSize(){return this.metrics.fontSize}render(e,t,n,a=Ee.canvasOuterMargin){const s=Te("svg",{width:t.width,height:t.height,viewBox:`0 0 ${t.width} ${t.height}`,"font-family":ar,"font-size":this.fontSize,class:"diagram"});s.append(Te("rect",{x:0,y:0,width:t.width,height:t.height,fill:"#fafafa"}));const r=a;s.append(Te("rect",{x:r,y:r,width:e.canvasSize.width-2*r-1,height:e.canvasSize.height-2*r-1,fill:"none",stroke:"black","stroke-width":Ee.outerFrameLineWidth}));const o=Te("g");for(const l of e.elements)this.drawNode(l,o,n,{},void 0,"method");return s.append(o),s}line(e,t){e.append(Te("polyline",{points:t.map(n=>n.join(",")).join(" "),fill:"none",stroke:"black","stroke-width":Ee.diagramLineWidth,"stroke-linejoin":"miter"}))}strokeCellBorder(e,t,n){const a=t.x,s=t.y,r=t.x+t.width,o=t.y+t.height;if(!n.top&&!n.left&&!n.bottom&&!n.right){e.append(Te("rect",{x:a,y:s,width:t.width,height:t.height,fill:"none",stroke:"black","stroke-width":Ee.diagramLineWidth}));return}n.top||this.line(e,[[a,s],[r,s]]),n.right||this.line(e,[[r,s],[r,o]]),n.bottom||this.line(e,[[r,o],[a,o]]),n.left||this.line(e,[[a,o],[a,s]])}textWidth(e){const t=pu(e);return t?this.measure(t.keyword,this.fontSize,"bold")+(t.rest===""?0:this.measure(" "+t.rest,this.fontSize,"medium")):this.measure(e,this.fontSize,"medium")}drawKeywordLine(e,t,n,a){const s=Te("text",{x:n,y:a+yu(this.fontSize,"medium").ascent,"font-weight":500});s.style.whiteSpace="pre";const r=pu(t);if(r){const o=Te("tspan",{"font-weight":700});if(o.textContent=r.keyword,s.append(o),r.rest!==""){const l=Te("tspan",{});l.textContent=" "+r.rest,s.append(l)}}else s.textContent=t;e.append(s)}drawLabel(e,t,n,a,s,r){const o=yu(this.fontSize,s?"bold":"medium"),l=Te("text",{x:n,y:r==="top"?a+o.ascent:a-o.descent,"font-weight":s?700:500});l.style.whiteSpace="pre",l.textContent=t,e.append(l)}roofMetrics(e,t,n,a){const s=t.y+n,r=e.dividerYInset??0,o=12,l=Math.max(e.element.textLines.length,1)*this.lineHeight,u=t.y+Ee.multiHeaderFirstLineY;if(e.element.type===T.fallauswahl){const c=Math.max(Ee.fallauswahlCaseLabelBand,this.lineHeight+10),d=s-c,h=Math.min(s+r,d-8),g=Math.max(h,u+l+6);return{apex:{x:a,y:g},maxTextBottom:d-o,roofBottom:s}}const m={x:a,y:s+r};return{apex:m,maxTextBottom:m.y-o,roofBottom:s}}drawNode(e,t,n,a,s,r){var P;const o=e.frame,l=e.element,u=o.x+o.width,m=o.y+o.height,c=l.type===T.verzweigung||l.type===T.fallauswahl,d=c?e.headerBandHeight:0,h=n!==void 0&&Do(e.idPath,n),g=$l(l),f=Te("g",{"data-path":e.idPath.join(",")});t.append(f);const b=this.usesSimulationHighlight,x=l.backgroundColor,v=x&&x.a>0?`rgba(${x.r}, ${x.g}, ${x.b}, ${x.a/255})`:"white",w=h&&(b||this.fillsSelection)?"rgba(199, 230, 255, 0.55)":v,z=wh(l.type)??(l.type===T.leerElement?r:"method"),I=Te("rect",{x:o.x,y:o.y,width:o.width,height:o.height,fill:w});w==="white"&&z&&I.setAttribute("class",`ns-scope ns-scope-${z}`),f.append(I),this.strokeCellBorder(f,o,a);const S=Ee.callSideBarInset;if(l.type===T.aufruf?(this.line(f,[[o.x+S,o.y],[o.x+S,m]]),this.line(f,[[u-S,o.y],[u-S,m]])):l.type===T.aussprung&&this.line(f,[[o.x+S,o.y],[o.x,o.y+o.height/2],[o.x+S,m]]),c&&e.dividerX!==void 0){const D=e.dividerX,A=this.roofMetrics(e,o,d,D),B=Math.max(g.length,1)*this.lineHeight,C=o.y+Ee.multiHeaderFirstLineY;this.line(f,[[o.x,o.y],[A.apex.x,A.apex.y],[u,o.y]]),l.type===T.fallauswahl&&this.line(f,[[o.x,A.roofBottom],[u,A.roofBottom]]);let L;C+B<=A.maxTextBottom?L=C:L=Math.max(o.y+2,A.maxTextBottom-(Math.max(g.length,1)-1)*this.lineHeight-this.lineHeight),g.forEach((F,Y)=>{const ne=this.textWidth(F);let X;if(l.type===T.verzweigung){const he=o.x+Ee.cellTextInsetX,ae=u-ne-Ee.cellTextInsetX;X=Math.min(Math.max(D-ne/2,he),ae)}else X=o.x+o.width/2-ne/2;this.drawKeywordLine(f,F,X,L+Y*this.lineHeight)})}else if(l.type!==T.doUntilSchleife)if(l.type===T.anweisung||l.type===T.aufruf||l.type===T.aussprung){const D=Ee.cellTextInsetX;let A=o.x+D,B=u-D;l.type===T.aufruf?(A=o.x+S+Ee.callTextInsetFromSideBar,B=u-S-Ee.callTextInsetFromSideBar):l.type===T.aussprung&&(A=o.x+S+D);const C=Math.max(0,B-A);let L=o.y+o.height/2-Math.max(1,g.length)*this.lineHeight/2;for(const F of g)this.drawKeywordLine(f,F,A+(C-this.textWidth(F))/2,L),L+=this.lineHeight}else{const D=Math.max(1,g.length)*this.lineHeight;let A=s===T.doUntilSchleife?o.y+o.height/2-D/2:o.y+Ee.cellTextInsetY;for(const B of g)this.drawKeywordLine(f,B,o.x+Ee.cellTextInsetX,A),A+=this.lineHeight}e.children.forEach((D,A)=>{const B=l.type===T.doUntilSchleife&&A===0?{top:!0,left:!0}:{};this.drawNode(D,t,n,B,l.type,z)});const k=Te("g");if(t.append(k),l.type===T.doUntilSchleife){const D=((P=e.children[0])==null?void 0:P.frame.x)??o.x+(e.loopBodyLeadingInset>0?e.loopBodyLeadingInset:Ee.loopBodyLeadingInset);this.drawLabel(k,"do",o.x+4,o.y+this.metrics.doUntilDoLabelTopInset,!0,"top");const A=m-e.headerBandHeight;this.line(k,[[D,A],[u,A]]),this.line(k,[[D,o.y],[D,A]]);let B=A+this.metrics.doUntilFooterTopInset;for(const C of g)this.drawKeywordLine(k,C,o.x+Ee.cellTextInsetX,B),B+=this.lineHeight}if(c&&e.dividerX!==void 0&&e.caseColumnFrames.length>1){const D=this.roofMetrics(e,o,d,e.dividerX),A=D.apex;e.caseColumnFrames.forEach((C,L)=>{if(L>=e.caseColumnFrames.length-1)return;const F=C.x+C.width,Y=C3(F,o,A),ne=Number.isFinite(Y)?Math.min(Math.max(Y,o.y),m):o.y;this.line(k,[[F,m],[F,ne]])});const B=l.cases;if(B&&B.length===e.caseColumnFrames.length){const C=l.type===T.fallauswahl?D.roofBottom-6:o.y+d-8,L=Ee.branchLabelInsetX;if(l.type===T.verzweigung&&B.length===2){this.drawLabel(k,"true",o.x+L,C,!0,"bottom");const F=e.caseColumnFrames[1],Y=this.measure("false",this.fontSize,"bold");this.drawLabel(k,"false",F.x+F.width-L-Y,C,!0,"bottom")}else B.forEach((F,Y)=>{const ne=e.caseColumnFrames[Y],X=["default","true","false"].includes(F.name.toLowerCase()),he=this.measure(F.name,this.fontSize,X?"bold":"medium");this.drawLabel(k,F.name,ne.x+ne.width/2-he/2,C,X,"bottom")})}}h&&k.append(Te("rect",{x:o.x,y:o.y,width:o.width,height:o.height,class:"selection-frame",fill:"none",stroke:b?"rgba(66, 140, 242, 0.78)":"rgba(0, 122, 255, 0.9)","stroke-width":Ee.selectionLineWidth}))}}function C3(i,e,t){const n=e.y;if(i<=t.x){const s=t.x-e.x;return Math.abs(s)<.5?t.y:n+(t.y-n)/s*(i-e.x)}const a=e.x+e.width-t.x;return Math.abs(a)<.5?t.y:t.y+(n-t.y)/a*(i-t.x)}function Do(i,e){return i.length===e.length&&i.every((t,n)=>t===e[n])}function A3(i){const e=[],t=n=>{e.push(n),n.children.forEach(t)};return i.forEach(t),e}function ds(i){var e,t;return{...i,textLines:$l(i),loopBody:(e=i.loopBody)==null?void 0:e.map(ds),cases:(t=i.cases)==null?void 0:t.map(n=>({name:n.name,elements:n.elements.map(ds)}))}}const P3=[{code:"de",name:"Deutsch"},{code:"en",name:"English"},{code:"es",name:"Español"},{code:"fr",name:"Français"},{code:"it",name:"Italiano"},{code:"pl",name:"Polski"},{code:"tr",name:"Türkçe"},{code:"ko",name:"한국어"},{code:"ja",name:"日本語"},{code:"el",name:"Ελληνικά"},{code:"uk",name:"Українська"},{code:"ar",name:"العربية"},{code:"ru",name:"Русский"},{code:"he",name:"עברית"},{code:"nl",name:"Nederlands"},{code:"sv",name:"Svenska"},{code:"da",name:"Dansk"},{code:"nb",name:"Norsk bokmål"},{code:"zh-Hans",name:"中文(简体)"},{code:"zh-Hant",name:"中文(繁體)"},{code:"pt-PT",name:"Português"},{code:"java",name:"Java (Keywords)"}],Ih=["de","en","pt-PT"],kh=P3.filter(i=>Ih.includes(i.code)),_u=i=>Ih.includes(i),D3=Object.assign({"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/ar.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-CxCno28C.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/da.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-BAutdlBb.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/de.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-Dk8F86qS.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/el.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-rqA-20hM.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/en.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-DBLIUcBd.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/es.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-LSTVB2Q5.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/fr.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-ByPZS4RL.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/he.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-R-16GCrk.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/it.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-DXAPah1g.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/ja.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-CkJEmEEP.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/ko.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-BudCXCER.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/nb.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-DSvkBkp-.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/nl.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-BJ55WGVD.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/pl.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-BYJK0mdR.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/pt-PT.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-CHv0OL9S.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/ru.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-1QZ0wfvJ.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/sv.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-M33nNbEe.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/tr.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-BM86Igqt.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/uk.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-UGog_aku.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/zh-Hans.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-CaVEL1es.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/zh-Hant.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-DqIDp_hh.js"),[],import.meta.url).then(i=>i.default)}),Sh=Object.assign({"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/Java.strings":()=>ee(()=>import("./Java-Bpx1Vwvg.js"),[],import.meta.url).then(i=>i.default)}),B3=Object.assign({"../i18n/ar.strings":()=>ee(()=>import("./ar-B37uSeni.js"),[],import.meta.url).then(i=>i.default),"../i18n/da.strings":()=>ee(()=>import("./da-BOu8fAad.js"),[],import.meta.url).then(i=>i.default),"../i18n/de.strings":()=>ee(()=>import("./de-B--hZiad.js"),[],import.meta.url).then(i=>i.default),"../i18n/el.strings":()=>ee(()=>import("./el-gg2XQg4B.js"),[],import.meta.url).then(i=>i.default),"../i18n/en.strings":()=>ee(()=>import("./en-CyL8rJ-B.js"),[],import.meta.url).then(i=>i.default),"../i18n/es.strings":()=>ee(()=>import("./es-pM1vcD9J.js"),[],import.meta.url).then(i=>i.default),"../i18n/fr.strings":()=>ee(()=>import("./fr-4jpJiELE.js"),[],import.meta.url).then(i=>i.default),"../i18n/he.strings":()=>ee(()=>import("./he-D0hfYxbO.js"),[],import.meta.url).then(i=>i.default),"../i18n/it.strings":()=>ee(()=>import("./it-DvTA5OAG.js"),[],import.meta.url).then(i=>i.default),"../i18n/ja.strings":()=>ee(()=>import("./ja-B9gt74zl.js"),[],import.meta.url).then(i=>i.default),"../i18n/ko.strings":()=>ee(()=>import("./ko-CsUr1hf8.js"),[],import.meta.url).then(i=>i.default),"../i18n/nb.strings":()=>ee(()=>import("./nb-CevhvW4M.js"),[],import.meta.url).then(i=>i.default),"../i18n/nl.strings":()=>ee(()=>import("./nl-BsXYXKpN.js"),[],import.meta.url).then(i=>i.default),"../i18n/pl.strings":()=>ee(()=>import("./pl-DzI5OyWY.js"),[],import.meta.url).then(i=>i.default),"../i18n/pt-PT.strings":()=>ee(()=>import("./pt-PT-Cr31YzEm.js"),[],import.meta.url).then(i=>i.default),"../i18n/ru.strings":()=>ee(()=>import("./ru-DicU-xti.js"),[],import.meta.url).then(i=>i.default),"../i18n/sv.strings":()=>ee(()=>import("./sv-CCQFxpqQ.js"),[],import.meta.url).then(i=>i.default),"../i18n/tr.strings":()=>ee(()=>import("./tr-BrQzU5M5.js"),[],import.meta.url).then(i=>i.default),"../i18n/uk.strings":()=>ee(()=>import("./uk-CgoU8BhR.js"),[],import.meta.url).then(i=>i.default),"../i18n/zh-Hans.strings":()=>ee(()=>import("./zh-Hans-C89x22CL.js"),[],import.meta.url).then(i=>i.default),"../i18n/zh-Hant.strings":()=>ee(()=>import("./zh-Hant-wLNOkM_A.js"),[],import.meta.url).then(i=>i.default)});function Ua(i,e){var t;return(t=Object.entries(i).find(([n])=>n.endsWith(e)))==null?void 0:t[1]}function Th(i){const e=new Map,t=i.replace(/\/\*[\s\S]*?\*\//g,"").replace(/^\s*\/\/.*$/gm,""),n=/"((?:[^"\\]|\\.)*)"\s*=\s*"((?:[^"\\]|\\.)*)"\s*;/g,a=s=>s.replace(/\\(u[0-9a-fA-F]{4}|.)/g,(r,o)=>o==="n"?` -`:o==="t"?" ":o.startsWith("u")&&o.length===5?String.fromCharCode(parseInt(o.slice(1),16)):o);for(const s of t.matchAll(n))e.set(a(s[1]),a(s[2]));return e}async function Bo(i){const e=i==="java"?Ua(Sh,"/Java.strings"):Ua(D3,`/${i}.lproj/Localizable.strings`),t=Ua(B3,`/${i}.strings`),n=new Map;for(const a of[e,t])if(a)for(const[s,r]of Th(await a()))n.set(s,r);return n}let _h="en",jh=new Map,e1=new Map;const hs="appLanguageCode",i0="visustruct.keywords";let Oo=new Map,a0=!1;const O3=i=>i.startsWith("element_")||i.startsWith("canvas_stub_");function M3(){try{const i=new URLSearchParams(location.search).get("lang")==="java"||localStorage.getItem(hs)==="java";return i&&(localStorage.setItem(hs,"en"),localStorage.setItem(i0,"1")),i}catch{return!1}}function Z3(){try{return localStorage.getItem(i0)==="1"}catch{return!1}}async function Ch(i,e=!0){if(i&&Oo.size===0){e1.size===0&&(e1=await Bo("en"));const t=Ua(Sh,"/Java.strings");if(t)for(const[n,a]of Th(await t()))O3(n)&&a!==e1.get(n)&&Oo.set(n,a)}if(a0=i,e)try{localStorage.setItem(i0,i?"1":"0")}catch{}}function L3(){return a0}function W3(){if(M3())return"en";const i=new URLSearchParams(location.search).get("lang");if(i&&_u(i))return i;try{const e=localStorage.getItem(hs);if(e&&_u(e))return e}catch{}for(const e of navigator.languages??[navigator.language]){const t=e.toLowerCase();if(t.startsWith("pt"))return"pt-PT";const n=kh.find(a=>a.code===t.split("-")[0]);if(n)return n.code}return"en"}async function Ah(i,e=!0){if(e1.size===0&&(e1=await Bo("en")),jh=i==="en"?e1:await Bo(i),_h=i,e)try{localStorage.setItem(hs,i)}catch{}const t=document.documentElement;t.lang=i==="java"?"en":i,t.dir=i==="ar"||i==="he"?"rtl":"ltr"}function o1(){return _h}function p(i,...e){const t=(a0?Oo.get(i):void 0)??jh.get(i)??e1.get(i)??i;if(e.length===0)return t;let n=0;return t.replace(/%(?:(\d+)\$)?[@d]/g,(a,s)=>String(e[s?Number(s)-1:n++]??""))}const gs=243,E3=244,Ph=40,Pr=4,N3=1;function s0(i){const e=i.length,t=gs+(e&255)+(e>>8)&255,n=i.reduce((a,s)=>a+s,0)&255;return Uint8Array.from([gs,t,e&255,e>>8,...i,n,E3])}function F3(i,e,t){const n=Array.from(new TextEncoder().encode(i));return s0([Ph,e,t&255,t>>8&255,n.length&255,n.length>>8,...n])}function R3(i){if(i[0]!==Ph||i.length<6)return;const e=new TextDecoder().decode(Uint8Array.from(i.slice(6))),t=/"ret"\s*:\s*([^}]*)\}/.exec(e);return t?{idx:i[2]|i[3]<<8,value:G3(t[1].trim())}:void 0}function J3(i){const e=[];for(;;){const t=i.indexOf(gs);if(t<0){i.length=0;break}if(i.splice(0,t),i.length<4)break;const n=i[2]|i[3]<<8;if(i[1]!==(gs+i[2]+i[3]&255)||n>4096){i.splice(0,1);continue}if(i.length/g,">")}function T3(i){return i.replace(/&/g,"&").replace(//g,">")}function ku(i){return String(i.a<<24|i.r<<16|i.g<<8|i.b|0)}function Qa(i,e){return Array.from(i.children).filter(t=>t.tagName===e)}function Do(i){const e=[];for(const t of Qa(i,"strelem")){const n=_3(t);n&&e.push(n)}return e}function _3(i){const e=fi(i,"typ");if(e===void 0||T[e]===void 0)return;const t={type:e,zoomX:fi(i,"zx")??0,zoomY:fi(i,"zy")??0,textLines:Qa(i,"text").map(o=>Ao((o.textContent??"").trim()))},n=Tu(i.getAttribute("textcolor"));n&&(t.textColor=n);const a=Tu(i.getAttribute("bgcolor"));a&&(t.backgroundColor=a),t.textLines.length===0&&(t.textLines=[""]);const s=Qa(i,"schleifeninhalt")[0];if(s){const o=Do(s);o.length>0&&(t.loopBody=o)}const r=Qa(i,"fall").map(o=>({name:Ao(o.getAttribute("fallname")??""),elements:Do(o)}));return r.length>0&&(t.cases=r),t}function Su(i,e){const t=i.getAttribute(e);return t===null?void 0:Ao(t)}function fi(i,e){const t=i.getAttribute(e);if(!(t===null||!/^[+-]?\d+$/.test(t)))return Number(t)}function Tu(i){if(i===null||!/^[+-]?\d+$/.test(i))return;const e=Number(i);if(e<-2147483648||e>2147483647)return;const t=e>>>0;return{a:t>>>24&255,r:t>>>16&255,g:t>>>8&255,b:t&255}}const j3="http://www.w3.org/2000/svg",Ee={diagramLineWidth:2,outerFrameLineWidth:2,selectionLineWidth:3.5,canvasOuterMargin:16,cellTextInsetX:18,cellTextInsetY:15,multiHeaderFirstLineY:14,branchLabelInsetX:10,fallauswahlCaseLabelBand:26,callSideBarInset:14,callTextInsetFromSideBar:20,loopBodyLeadingInset:20};function wh(i){switch(i){case T.forSchleife:case T.whileSchleife:case T.doUntilSchleife:case T.endlosschleife:return"loop";case T.verzweigung:case T.fallauswahl:return"if";default:return}}function Te(i,e={}){const t=document.createElementNS(j3,i);for(const[n,a]of Object.entries(e))t.setAttribute(n,String(a));return t}class zh{constructor(e,t){y(this,"usesSimulationHighlight",!1);y(this,"fillsSelection",!1);this.metrics=e,this.measure=t}get lineHeight(){return this.metrics.lineHeight}get fontSize(){return this.metrics.fontSize}render(e,t,n,a=Ee.canvasOuterMargin){const s=Te("svg",{width:t.width,height:t.height,viewBox:`0 0 ${t.width} ${t.height}`,"font-family":ar,"font-size":this.fontSize,class:"diagram"});s.append(Te("rect",{x:0,y:0,width:t.width,height:t.height,fill:"#fafafa"}));const r=a;s.append(Te("rect",{x:r,y:r,width:e.canvasSize.width-2*r-1,height:e.canvasSize.height-2*r-1,fill:"none",stroke:"black","stroke-width":Ee.outerFrameLineWidth}));const o=Te("g");for(const l of e.elements)this.drawNode(l,o,n,{},void 0,"method");return s.append(o),s}line(e,t){e.append(Te("polyline",{points:t.map(n=>n.join(",")).join(" "),fill:"none",stroke:"black","stroke-width":Ee.diagramLineWidth,"stroke-linejoin":"miter"}))}strokeCellBorder(e,t,n){const a=t.x,s=t.y,r=t.x+t.width,o=t.y+t.height;if(!n.top&&!n.left&&!n.bottom&&!n.right){e.append(Te("rect",{x:a,y:s,width:t.width,height:t.height,fill:"none",stroke:"black","stroke-width":Ee.diagramLineWidth}));return}n.top||this.line(e,[[a,s],[r,s]]),n.right||this.line(e,[[r,s],[r,o]]),n.bottom||this.line(e,[[r,o],[a,o]]),n.left||this.line(e,[[a,o],[a,s]])}textWidth(e){const t=pu(e);return t?this.measure(t.keyword,this.fontSize,"bold")+(t.rest===""?0:this.measure(" "+t.rest,this.fontSize,"medium")):this.measure(e,this.fontSize,"medium")}drawKeywordLine(e,t,n,a){const s=Te("text",{x:n,y:a+yu(this.fontSize,"medium").ascent,"font-weight":500});s.style.whiteSpace="pre";const r=pu(t);if(r){const o=Te("tspan",{"font-weight":700});if(o.textContent=r.keyword,s.append(o),r.rest!==""){const l=Te("tspan",{});l.textContent=" "+r.rest,s.append(l)}}else s.textContent=t;e.append(s)}drawLabel(e,t,n,a,s,r){const o=yu(this.fontSize,s?"bold":"medium"),l=Te("text",{x:n,y:r==="top"?a+o.ascent:a-o.descent,"font-weight":s?700:500});l.style.whiteSpace="pre",l.textContent=t,e.append(l)}roofMetrics(e,t,n,a){const s=t.y+n,r=e.dividerYInset??0,o=12,l=Math.max(e.element.textLines.length,1)*this.lineHeight,u=t.y+Ee.multiHeaderFirstLineY;if(e.element.type===T.fallauswahl){const c=Math.max(Ee.fallauswahlCaseLabelBand,this.lineHeight+10),d=s-c,h=Math.min(s+r,d-8),g=Math.max(h,u+l+6);return{apex:{x:a,y:g},maxTextBottom:d-o,roofBottom:s}}const m={x:a,y:s+r};return{apex:m,maxTextBottom:m.y-o,roofBottom:s}}drawNode(e,t,n,a,s,r){var D;const o=e.frame,l=e.element,u=o.x+o.width,m=o.y+o.height,c=l.type===T.verzweigung||l.type===T.fallauswahl,d=c?e.headerBandHeight:0,h=n!==void 0&&Po(e.idPath,n),g=$l(l),f=Te("g",{"data-path":e.idPath.join(",")});t.append(f);const b=this.usesSimulationHighlight,x=l.backgroundColor,v=x&&x.a>0?`rgba(${x.r}, ${x.g}, ${x.b}, ${x.a/255})`:"white",w=h&&(b||this.fillsSelection)?"rgba(199, 230, 255, 0.55)":v,z=wh(l.type)??(l.type===T.leerElement?r:"method"),I=Te("rect",{x:o.x,y:o.y,width:o.width,height:o.height,fill:w});w==="white"&&z&&I.setAttribute("class",`ns-scope ns-scope-${z}`),f.append(I),this.strokeCellBorder(f,o,a);const S=Ee.callSideBarInset;if(l.type===T.aufruf?(this.line(f,[[o.x+S,o.y],[o.x+S,m]]),this.line(f,[[u-S,o.y],[u-S,m]])):l.type===T.aussprung&&this.line(f,[[o.x+S,o.y],[o.x,o.y+o.height/2],[o.x+S,m]]),c&&e.dividerX!==void 0){const P=e.dividerX,C=this.roofMetrics(e,o,d,P),B=Math.max(g.length,1)*this.lineHeight,A=o.y+Ee.multiHeaderFirstLineY;this.line(f,[[o.x,o.y],[C.apex.x,C.apex.y],[u,o.y]]),l.type===T.fallauswahl&&this.line(f,[[o.x,C.roofBottom],[u,C.roofBottom]]);let L;A+B<=C.maxTextBottom?L=A:L=Math.max(o.y+2,C.maxTextBottom-(Math.max(g.length,1)-1)*this.lineHeight-this.lineHeight),g.forEach((F,Y)=>{const ne=this.textWidth(F);let X;if(l.type===T.verzweigung){const he=o.x+Ee.cellTextInsetX,ae=u-ne-Ee.cellTextInsetX;X=Math.min(Math.max(P-ne/2,he),ae)}else X=o.x+o.width/2-ne/2;this.drawKeywordLine(f,F,X,L+Y*this.lineHeight)})}else if(l.type!==T.doUntilSchleife)if(l.type===T.anweisung||l.type===T.aufruf||l.type===T.aussprung){const P=Ee.cellTextInsetX;let C=o.x+P,B=u-P;l.type===T.aufruf?(C=o.x+S+Ee.callTextInsetFromSideBar,B=u-S-Ee.callTextInsetFromSideBar):l.type===T.aussprung&&(C=o.x+S+P);const A=Math.max(0,B-C);let L=o.y+o.height/2-Math.max(1,g.length)*this.lineHeight/2;for(const F of g)this.drawKeywordLine(f,F,C+(A-this.textWidth(F))/2,L),L+=this.lineHeight}else{const P=Math.max(1,g.length)*this.lineHeight;let C=s===T.doUntilSchleife?o.y+o.height/2-P/2:o.y+Ee.cellTextInsetY;for(const B of g)this.drawKeywordLine(f,B,o.x+Ee.cellTextInsetX,C),C+=this.lineHeight}e.children.forEach((P,C)=>{const B=l.type===T.doUntilSchleife&&C===0?{top:!0,left:!0}:{};this.drawNode(P,t,n,B,l.type,z)});const k=Te("g");if(t.append(k),l.type===T.doUntilSchleife){const P=((D=e.children[0])==null?void 0:D.frame.x)??o.x+(e.loopBodyLeadingInset>0?e.loopBodyLeadingInset:Ee.loopBodyLeadingInset);this.drawLabel(k,"do",o.x+4,o.y+this.metrics.doUntilDoLabelTopInset,!0,"top");const C=m-e.headerBandHeight;this.line(k,[[P,C],[u,C]]),this.line(k,[[P,o.y],[P,C]]);let B=C+this.metrics.doUntilFooterTopInset;for(const A of g)this.drawKeywordLine(k,A,o.x+Ee.cellTextInsetX,B),B+=this.lineHeight}if(c&&e.dividerX!==void 0&&e.caseColumnFrames.length>1){const P=this.roofMetrics(e,o,d,e.dividerX),C=P.apex;e.caseColumnFrames.forEach((A,L)=>{if(L>=e.caseColumnFrames.length-1)return;const F=A.x+A.width,Y=A3(F,o,C),ne=Number.isFinite(Y)?Math.min(Math.max(Y,o.y),m):o.y;this.line(k,[[F,m],[F,ne]])});const B=l.cases;if(B&&B.length===e.caseColumnFrames.length){const A=l.type===T.fallauswahl?P.roofBottom-6:o.y+d-8,L=Ee.branchLabelInsetX;if(l.type===T.verzweigung&&B.length===2){this.drawLabel(k,"true",o.x+L,A,!0,"bottom");const F=e.caseColumnFrames[1],Y=this.measure("false",this.fontSize,"bold");this.drawLabel(k,"false",F.x+F.width-L-Y,A,!0,"bottom")}else B.forEach((F,Y)=>{const ne=e.caseColumnFrames[Y],X=["default","true","false"].includes(F.name.toLowerCase()),he=this.measure(F.name,this.fontSize,X?"bold":"medium");this.drawLabel(k,F.name,ne.x+ne.width/2-he/2,A,X,"bottom")})}}h&&k.append(Te("rect",{x:o.x,y:o.y,width:o.width,height:o.height,class:"selection-frame",fill:"none",stroke:b?"rgba(66, 140, 242, 0.78)":"rgba(0, 122, 255, 0.9)","stroke-width":Ee.selectionLineWidth}))}}function A3(i,e,t){const n=e.y;if(i<=t.x){const s=t.x-e.x;return Math.abs(s)<.5?t.y:n+(t.y-n)/s*(i-e.x)}const a=e.x+e.width-t.x;return Math.abs(a)<.5?t.y:t.y+(n-t.y)/a*(i-t.x)}function Po(i,e){return i.length===e.length&&i.every((t,n)=>t===e[n])}function C3(i){const e=[],t=n=>{e.push(n),n.children.forEach(t)};return i.forEach(t),e}function ds(i){var e,t;return{...i,textLines:$l(i),loopBody:(e=i.loopBody)==null?void 0:e.map(ds),cases:(t=i.cases)==null?void 0:t.map(n=>({name:n.name,elements:n.elements.map(ds)}))}}const D3=[{code:"de",name:"Deutsch"},{code:"en",name:"English"},{code:"es",name:"Español"},{code:"fr",name:"Français"},{code:"it",name:"Italiano"},{code:"pl",name:"Polski"},{code:"tr",name:"Türkçe"},{code:"ko",name:"한국어"},{code:"ja",name:"日本語"},{code:"el",name:"Ελληνικά"},{code:"uk",name:"Українська"},{code:"ar",name:"العربية"},{code:"ru",name:"Русский"},{code:"he",name:"עברית"},{code:"nl",name:"Nederlands"},{code:"sv",name:"Svenska"},{code:"da",name:"Dansk"},{code:"nb",name:"Norsk bokmål"},{code:"zh-Hans",name:"中文(简体)"},{code:"zh-Hant",name:"中文(繁體)"},{code:"pt-PT",name:"Português"},{code:"java",name:"Java (Keywords)"}],Ih=["de","en","pt-PT"],kh=D3.filter(i=>Ih.includes(i.code)),_u=i=>Ih.includes(i),P3=Object.assign({"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/ar.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-CxCno28C.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/da.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-BAutdlBb.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/de.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-Dk8F86qS.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/el.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-rqA-20hM.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/en.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-DBLIUcBd.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/es.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-LSTVB2Q5.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/fr.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-ByPZS4RL.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/he.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-R-16GCrk.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/it.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-DXAPah1g.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/ja.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-CkJEmEEP.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/ko.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-BudCXCER.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/nb.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-DSvkBkp-.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/nl.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-BJ55WGVD.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/pl.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-BYJK0mdR.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/pt-PT.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-CHv0OL9S.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/ru.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-1QZ0wfvJ.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/sv.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-M33nNbEe.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/tr.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-BM86Igqt.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/uk.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-UGog_aku.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/zh-Hans.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-CaVEL1es.js"),[],import.meta.url).then(i=>i.default),"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/zh-Hant.lproj/Localizable.strings":()=>ee(()=>import("./Localizable-DqIDp_hh.js"),[],import.meta.url).then(i=>i.default)}),Sh=Object.assign({"../../../VisuStruct-iOS/VisuStructXcodeOpen/VisuStruct/Java.strings":()=>ee(()=>import("./Java-Bpx1Vwvg.js"),[],import.meta.url).then(i=>i.default)}),B3=Object.assign({"../i18n/ar.strings":()=>ee(()=>import("./ar-B37uSeni.js"),[],import.meta.url).then(i=>i.default),"../i18n/da.strings":()=>ee(()=>import("./da-BOu8fAad.js"),[],import.meta.url).then(i=>i.default),"../i18n/de.strings":()=>ee(()=>import("./de-B--hZiad.js"),[],import.meta.url).then(i=>i.default),"../i18n/el.strings":()=>ee(()=>import("./el-gg2XQg4B.js"),[],import.meta.url).then(i=>i.default),"../i18n/en.strings":()=>ee(()=>import("./en-CyL8rJ-B.js"),[],import.meta.url).then(i=>i.default),"../i18n/es.strings":()=>ee(()=>import("./es-pM1vcD9J.js"),[],import.meta.url).then(i=>i.default),"../i18n/fr.strings":()=>ee(()=>import("./fr-4jpJiELE.js"),[],import.meta.url).then(i=>i.default),"../i18n/he.strings":()=>ee(()=>import("./he-D0hfYxbO.js"),[],import.meta.url).then(i=>i.default),"../i18n/it.strings":()=>ee(()=>import("./it-DvTA5OAG.js"),[],import.meta.url).then(i=>i.default),"../i18n/ja.strings":()=>ee(()=>import("./ja-B9gt74zl.js"),[],import.meta.url).then(i=>i.default),"../i18n/ko.strings":()=>ee(()=>import("./ko-CsUr1hf8.js"),[],import.meta.url).then(i=>i.default),"../i18n/nb.strings":()=>ee(()=>import("./nb-CevhvW4M.js"),[],import.meta.url).then(i=>i.default),"../i18n/nl.strings":()=>ee(()=>import("./nl-BsXYXKpN.js"),[],import.meta.url).then(i=>i.default),"../i18n/pl.strings":()=>ee(()=>import("./pl-DzI5OyWY.js"),[],import.meta.url).then(i=>i.default),"../i18n/pt-PT.strings":()=>ee(()=>import("./pt-PT-Cr31YzEm.js"),[],import.meta.url).then(i=>i.default),"../i18n/ru.strings":()=>ee(()=>import("./ru-DicU-xti.js"),[],import.meta.url).then(i=>i.default),"../i18n/sv.strings":()=>ee(()=>import("./sv-CCQFxpqQ.js"),[],import.meta.url).then(i=>i.default),"../i18n/tr.strings":()=>ee(()=>import("./tr-BrQzU5M5.js"),[],import.meta.url).then(i=>i.default),"../i18n/uk.strings":()=>ee(()=>import("./uk-CgoU8BhR.js"),[],import.meta.url).then(i=>i.default),"../i18n/zh-Hans.strings":()=>ee(()=>import("./zh-Hans-C89x22CL.js"),[],import.meta.url).then(i=>i.default),"../i18n/zh-Hant.strings":()=>ee(()=>import("./zh-Hant-wLNOkM_A.js"),[],import.meta.url).then(i=>i.default)});function Ua(i,e){var t;return(t=Object.entries(i).find(([n])=>n.endsWith(e)))==null?void 0:t[1]}function Th(i){const e=new Map,t=i.replace(/\/\*[\s\S]*?\*\//g,"").replace(/^\s*\/\/.*$/gm,""),n=/"((?:[^"\\]|\\.)*)"\s*=\s*"((?:[^"\\]|\\.)*)"\s*;/g,a=s=>s.replace(/\\(u[0-9a-fA-F]{4}|.)/g,(r,o)=>o==="n"?` +`:o==="t"?" ":o.startsWith("u")&&o.length===5?String.fromCharCode(parseInt(o.slice(1),16)):o);for(const s of t.matchAll(n))e.set(a(s[1]),a(s[2]));return e}async function Bo(i){const e=i==="java"?Ua(Sh,"/Java.strings"):Ua(P3,`/${i}.lproj/Localizable.strings`),t=Ua(B3,`/${i}.strings`),n=new Map;for(const a of[e,t])if(a)for(const[s,r]of Th(await a()))n.set(s,r);return n}let _h="en",jh=new Map,e1=new Map;const hs="appLanguageCode",i0="visustruct.keywords";let Oo=new Map,a0=!1;const O3=i=>i.startsWith("element_")||i.startsWith("canvas_stub_");function M3(){try{const i=new URLSearchParams(location.search).get("lang")==="java"||localStorage.getItem(hs)==="java";return i&&(localStorage.setItem(hs,"en"),localStorage.setItem(i0,"1")),i}catch{return!1}}function Z3(){try{return localStorage.getItem(i0)==="1"}catch{return!1}}async function Ah(i,e=!0){if(i&&Oo.size===0){e1.size===0&&(e1=await Bo("en"));const t=Ua(Sh,"/Java.strings");if(t)for(const[n,a]of Th(await t()))O3(n)&&a!==e1.get(n)&&Oo.set(n,a)}if(a0=i,e)try{localStorage.setItem(i0,i?"1":"0")}catch{}}function L3(){return a0}function W3(){if(M3())return"en";const i=new URLSearchParams(location.search).get("lang");if(i&&_u(i))return i;try{const e=localStorage.getItem(hs);if(e&&_u(e))return e}catch{}for(const e of navigator.languages??[navigator.language]){const t=e.toLowerCase();if(t.startsWith("pt"))return"pt-PT";const n=kh.find(a=>a.code===t.split("-")[0]);if(n)return n.code}return"en"}async function Ch(i,e=!0){if(e1.size===0&&(e1=await Bo("en")),jh=i==="en"?e1:await Bo(i),_h=i,e)try{localStorage.setItem(hs,i)}catch{}const t=document.documentElement;t.lang=i==="java"?"en":i,t.dir=i==="ar"||i==="he"?"rtl":"ltr"}function o1(){return _h}function p(i,...e){const t=(a0?Oo.get(i):void 0)??jh.get(i)??e1.get(i)??i;if(e.length===0)return t;let n=0;return t.replace(/%(?:(\d+)\$)?[@d]/g,(a,s)=>String(e[s?Number(s)-1:n++]??""))}const gs=243,E3=244,Dh=40,Dr=4,N3=1;function s0(i){const e=i.length,t=gs+(e&255)+(e>>8)&255,n=i.reduce((a,s)=>a+s,0)&255;return Uint8Array.from([gs,t,e&255,e>>8,...i,n,E3])}function F3(i,e,t){const n=Array.from(new TextEncoder().encode(i));return s0([Dh,e,t&255,t>>8&255,n.length&255,n.length>>8,...n])}function R3(i){if(i[0]!==Dh||i.length<6)return;const e=new TextDecoder().decode(Uint8Array.from(i.slice(6))),t=/"ret"\s*:\s*([^}]*)\}/.exec(e);return t?{idx:i[2]|i[3]<<8,value:G3(t[1].trim())}:void 0}function J3(i){const e=[];for(;;){const t=i.indexOf(gs);if(t<0){i.length=0;break}if(i.splice(0,t),i.length<4)break;const n=i[2]|i[3]<<8;if(i[1]!==(gs+i[2]+i[3]&255)||n>4096){i.splice(0,1);continue}if(i.lengthArray.from({length:e},(t,n)=>i>>>8*n&255);function Q3(i){let e=0;for(let t=0;t>>0;return bi(e,4)}const Dr=(i,e)=>s0([1,0,Dh,i,...bi(e.length,2),...e]);function U3(i,e=H3){const t=new TextEncoder().encode(i),n=(4-t.length%K1+K1)%K1,a=new Uint8Array(t.length+n).fill(10);a.set(t);const s=[Dr(1,[0,...bi(a.length,4),...Q3(a),...Array.from(new TextEncoder().encode(e))])],r=a.length-4;for(let o=0;oi.length===3&&i[0]===13,$3=i=>i.length===7||i.some((e,t)=>e===Dh&&i[t+1]===240),Bh=()=>typeof navigator>"u"?void 0:navigator.serial,Br=()=>Bh()!==void 0,K3=(...i)=>`exec(${JSON.stringify(i.join("; "))})`,sr=(i,e=24)=>K3("cyberpi.display.clear()",`cyberpi.display.show_label(${JSON.stringify(i)}, ${e}, 'center')`),Oh=sr("VisuBot",32);class X3{constructor(){y(this,"port");y(this,"writer");y(this,"reader");y(this,"loop");y(this,"rx",[]);y(this,"idx",1);y(this,"frameWaiters",[]);y(this,"waiting",new Map);y(this,"queue",Promise.resolve());y(this,"listeners",new Set);y(this,"error");y(this,"connecting",!1)}listen(e){return this.listeners.add(e),()=>this.listeners.delete(e)}changed(){for(const e of this.listeners)e()}get connected(){return this.writer!==void 0&&!this.connecting}async connect(){const e=Bh();if(!e)throw new Error("Web Serial");const t=await e.requestPort();await t.open({baudRate:115200}),this.port=t,this.writer=t.writable.getWriter(),this.error=void 0,this.connecting=!0,this.changed(),this.loop=this.readLoop(),window.addEventListener("pagehide",()=>void this.disconnect(),{once:!0}),await new Promise(n=>setTimeout(n,3e3)),this.writer&&(this.rx.length=0,this.connecting=!1,this.changed(),await this.run(Oh))}async disconnect(e){if(!this.port)return this.error=e,this.changed();if(!e&&this.writer&&!this.connecting)for(const r of["mbot2.EM_stop('ALL')","cyberpi.led.off()",sr("Bis bald!")])await this.send(r,Pr,2e3).catch(()=>{});const t=this.port,n=this.writer,a=this.reader,s=this.loop;this.port=this.writer=this.reader=this.loop=void 0,this.error=e,this.connecting=!1;for(const r of this.waiting.values())r.reject(new Error(e??"getrennt"));this.waiting.clear();try{await(a==null?void 0:a.cancel()),await s,await(n==null?void 0:n.close())}catch{}try{n==null||n.releaseLock(),await t.close()}catch(r){console.warn("[mBot2] Schließen",r.message)}this.changed()}run(e){return this.send(e,Pr,3e4).then(()=>{})}ask(e){return this.send(e,N3,3e3)}async upload(e,t=()=>{}){if(this.port||await this.connect(),!this.writer)throw new Error(this.error??"nicht verbunden");const n=U3(e),a=6+n.length+3;let s=0;const r=()=>t(++s,a),o=async()=>{await this.sendFrame(s0(V3),Y3),r();for(const l of q3)await this.send(l,Pr,3e3),r()};await o(),await o();for(const l of n)await this.sendFrame(l,$3),r();s=a-3,await o(),await this.restart()}sendFrame(e,t){const n=this.queue.then(async()=>{for(let a=0;a<3;a++){if(!this.writer)throw new Error("nicht verbunden");let s=()=>{};const r=new Promise(u=>s=u),o={match:t,resolve:s};this.frameWaiters.push(o),await this.writer.write(e);const l=await Promise.race([r.then(()=>!0),new Promise(u=>setTimeout(()=>u(!1),3e3))]);if(this.frameWaiters=this.frameWaiters.filter(u=>u!==o),l)return}throw new Error("keine Antwort")});return this.queue=n.catch(()=>{}),n}async restart(){const e=this.port;await this.disconnect("restart"),this.error=void 0,await new Promise(t=>setTimeout(t,300)),await e.open({baudRate:115200}),await new Promise(t=>setTimeout(t,500)),await e.close(),this.changed()}send(e,t,n){const a=this.queue.then(()=>new Promise((s,r)=>{if(!this.writer)return r(new Error("nicht verbunden"));const o=this.idx;this.idx=this.idx%65535+1;const l=setTimeout(()=>{this.waiting.delete(o),r(new Error("keine Antwort"))},n);this.waiting.set(o,{resolve:u=>(clearTimeout(l),s(u)),reject:u=>(clearTimeout(l),r(u))}),this.writer.write(F3(e,t,o)).catch(u=>{this.waiting.delete(o),r(u)})}));return this.queue=a.catch(()=>{}),a}async readLoop(){var e;for(;(e=this.port)!=null&&e.readable;){const t=this.port.readable.getReader();this.reader=t;try{for(;;){const{value:n,done:a}=await t.read();if(a)break;this.rx.push(...n);for(const s of J3(this.rx)){const r=this.frameWaiters.findIndex(u=>u.match(s));r>=0&&this.frameWaiters.splice(r,1)[0].resolve();const o=R3(s);if(!o)continue;const l=this.waiting.get(o.idx);this.waiting.delete(o.idx),l==null||l.resolve(o.value)}}}catch(n){const a=["BufferOverrunError","FramingError","BreakError","ParityError"].includes(n.name);console.warn("[mBot2] Lesefehler",n.name,n.message),!a&&this.port&&this.disconnect(n.message)}finally{t.releaseLock()}if(!this.writer)break}}}const be=new X3,Mh=5,eb=i=>Number.isInteger(i)&&i>=0&&iString(Math.round(i*100)/100),Mo=6.5,h1=Math.PI*Mo,nb={cm:{cm:1,one:"cm",many:"cm"},umdrehungen:{cm:h1,one:"Umdrehung",many:"Umdrehungen"},umdrehung:{cm:h1,one:"Umdrehung",many:"Umdrehungen"},rotations:{cm:h1,one:"rotation",many:"rotations"},rotation:{cm:h1,one:"rotation",many:"rotations"},rotações:{cm:h1,one:"rotação",many:"rotações"},rotação:{cm:h1,one:"rotação",many:"rotações"}},ib=["cm","Umdrehungen","rotations"];function ab(i,e,t){const n=nb[t.trim().toLowerCase()];if(!n)return;const a=e*n.cm,s=Zo(i,[a]);if(n.cm===1)return s;const r=e===1?n.one:n.many;return{...s,label:`${ze(e)} ${r} ${i==="forward"?"vorwärts":"rückwärts"} (${ze(a)} cm)`}}const Di={forward:{args:1,defaults:[ju],python:([i])=>`mbot2.straight(${ze(i)})`,label:([i])=>`${ze(i)} cm vorwärts`},backward:{args:1,defaults:[ju],python:([i])=>`mbot2.straight(${ze(-i)})`,label:([i])=>`${ze(i)} cm rückwärts`},turnLeft:{args:1,defaults:[90],python:([i])=>`mbot2.turn(${ze(-i)})`,label:([i])=>`${ze(i)}° nach links drehen`},turnRight:{args:1,defaults:[90],python:([i])=>`mbot2.turn(${ze(i)})`,label:([i])=>`${ze(i)}° nach rechts drehen`},stop:{args:0,python:()=>'mbot2.EM_stop("ALL")',label:()=>"anhalten"},drive:{args:2,python:([i,e])=>`mbot2.drive_power(${ze(i)}, ${ze(-e)})`,label:([i,e])=>`Räder links ${ze(i)} %, rechts ${ze(e)} %`},setLed:{args:3,python:([i,e,t])=>`cyberpi.led.on(${ze(i)}, ${ze(e)}, ${ze(t)})`,label:([i,e,t])=>`LEDs (${ze(i)}, ${ze(e)}, ${ze(t)})`},ledOff:{args:0,python:()=>"cyberpi.led.off()",label:()=>"LEDs aus"},ledColor:{args:1,text:!0,choices:Object.keys(ps),valid:([i])=>eb(i),python:([i],e)=>`cyberpi.led.on(${ps[e].join(", ")}, id=${i+1})`,label:([i],e)=>`LED ${i}: ${e}`},playTone:{args:2,python:([i,e])=>`cyberpi.audio.play_tone(${ze(i)}, ${ze(e/1e3)})`,label:([i,e])=>`Ton ${ze(i)} Hz, ${ze(e)} ms`},pause:{args:1,label:([i])=>`${ze(i)} ms warten`},resetTimer:{args:0,python:()=>"cyberpi.timer.reset()",label:()=>"Stoppuhr auf 0"},emotion:{args:0,text:!0,choices:tb,python:(i,e)=>`cyberpi.emotion.${e}()`,label:(i,e)=>`Gefühl: ${e}`},showText:{args:0,text:!0,python:(i,e)=>sr(e),label:(i,e)=>`Bildschirm: ${e}`}},Cu={red:{de:"rot",en:"red"},green:{de:"grün",en:"green"},blue:{de:"blau",en:"blue"},yellow:{de:"gelb",en:"yellow"},cyan:{de:"türkis",en:"cyan"},purple:{de:"lila",en:"purple"},white:{de:"weiß",en:"white"},black:{de:"schwarz",en:"black"}};let r0="en";function sb(i){r0=i==="de"?"de":"en"}const rb=()=>r0;function Zh(i){const e=i.trim().toLowerCase(),t=Cu[e]??Object.values(Cu).find(n=>n.de===e);return t?t[r0]:e}const g1=i=>({python:`cyberpi.controller.is_press('${i}')`,simulated:!1}),Pt={getDistance:{python:"mbuild.ultrasonic2.get(1)",simulated:100},getLine:{python:"mbuild.quad_rgb_sensor.get_line_sta('all', 1)",simulated:0},isLineLeft:{python:"mbuild.quad_rgb_sensor.is_line('L1', 1)",simulated:!1},isLineRight:{python:"mbuild.quad_rgb_sensor.is_line('R1', 1)",simulated:!1},getColor:{python:"mbuild.quad_rgb_sensor.get_color_sta('L1', 1)",simulated:"white"},isButtonA:g1("a"),isButtonB:g1("b"),isJoystickUp:g1("up"),isJoystickDown:g1("down"),isJoystickLeft:g1("left"),isJoystickRight:g1("right"),getBrightness:{python:"cyberpi.get_bri()",simulated:50},getLoudness:{python:"cyberpi.get_loudness('maximum')",simulated:0},getPitch:{python:"cyberpi.get_pitch()",simulated:0},getRoll:{python:"cyberpi.get_roll()",simulated:0},isShaken:{python:"cyberpi.is_shake()",simulated:!1},getBattery:{python:"cyberpi.get_battery()",simulated:100},getTimer:{python:"cyberpi.timer.get()",simulated:0}};function ob(i){const e=new Set;for(const t of i.matchAll(/\bmbot\s*\.\s*([A-Za-z_]\w*)\s*\(\s*\)/gu))t[1]in Pt&&e.add(t[1]);return[...e]}function lb(i){const e=/^mbot\s*\.\s*led\s*\(([^()]*(?:\([^()]*\)[^()]*)*)\)\s*\.\s*setColor\s*\(([\s\S]*)\)\s*;?$/u.exec(i.trim());if(e)return{method:"ledColor",args:[e[1].trim(),e[2].trim()]};const t=/^mbot\s*\.\s*([A-Za-z_]\w*)\s*\(([\s\S]*)\)\s*;?$/u.exec(i.trim());if(!t)return;const n=t[2].trim();return{method:t[1],args:n===""?[]:cb(n)}}function fs(i,e){const t=Di[i];if(!t)return;const n=e.length===0&&t.defaults?t.defaults:e;if(n.length===t.args)return!t.valid||t.valid(n)?n:void 0}function Zo(i,e,t=""){var a;const n=Di[i];return{method:i,args:e,python:(a=n.python)==null?void 0:a.call(n,e,t),waitMs:i==="pause"?Math.max(0,e[0]):void 0,label:n.label(e,t),...n.text?{text:t}:{}}}function Lh(i){return i.map(e=>[e.method,...e.args.map(ze),...e.text!==void 0?[JSON.stringify(e.text)]:[]].join(" "))}function ub(i){let e=0;const t=i.trim(),n=()=>{const s=[];for(;;){for(;t[e]===" "||t[e]===",";)e++;if(e>=t.length||t[e]===")")return s;const r=/^(\d+)\s*[x×]\s*\(/u.exec(t.slice(e));if(r){e+=r[0].length;const c=n();if(t[e]!==")")throw new Error(`„)“ fehlt in „${i}“`);e++;for(let d=0;d{if(!(n in Pt))return t;const a=e(n);return typeof a=="string"?JSON.stringify(n==="getColor"?Zh(a):a):String(a)}):i}function cb(i){const e=[];let t=0,n=!1,a=0;for(let s=0;s{const a=t==="turn"?((n+180)%360+360)%360-180:n;if(Math.abs(a)<1e-6)return[];const s=Math.round(Math.abs(a)*100)/100;return t==="drive"?[`${a>0?"forward":"backward"} ${s}`]:[a===-180?"turnRight 180":`${a>0?"turnRight":"turnLeft"} ${s}`]})}function Wh(i){let e=0;const t=i.trim(),n=()=>{const s=[];for(;;){for(;t[e]===" "||t[e]===",";)e++;if(e>=t.length||t[e]===")")return s;const r=/^(\d+)\s*[x×]\s*\(/u.exec(t.slice(e));if(r){e+=r[0].length;const u=n();if(t[e]!==")")throw new Error(`„)“ fehlt in „${i}“`);e++;for(let m=0;ma===i[s%t])){const a=mi(i.slice(0,t));return`${n} x ${t===1?a:`(${a})`}`}}return i.join(", ")}const Eh=["cyberpi","screen","joystick","buttons","leds","lightSensor","microphone","shield","powerSwitch","motors","wheels","ultrasonic","lineSensor","caster","chassis"],db=i=>Eh.includes(i),hb=100;function Nh(i){switch(i.kind){case"finished":return"Simulation finished.";case"infiniteLoopWithoutBody":return"Infinite loop has no body.";case"unsupportedStatement":return`Unsupported statement: ${i.text}`;case"invalidExpression":return`Invalid expression: ${i.text}`;case"unknownVariable":return i.similar?`Unknown variable: ${i.text}. Java is case-sensitive: did you mean ${i.similar}?`:`Unknown variable: ${i.text}`;case"divisionByZero":return"Division by zero.";case"wholeNumberExpected":return"Please enter a whole number.";case"numberExpected":return"Please enter a number.";case"booleanExpected":return"Please enter true or false.";case"subprogramNotFound":return`No open diagram is called ${i.text}. The call was skipped.`;case"callTooDeep":return"Too many nested calls. Does a subprogram call itself?";case"callArguments":return`The call does not match the header of ${i.text}. Check the values in the parentheses.`;case"missingReturn":return`${i.text} ended without returning a value with return.`;case"fileNotFound":return`There is no file called ${i.text}.`;case"endOfFile":return`The file ${i.text} has no more lines.`;case"nullValue":return`${i.text} is null.`;case"other":return i.text}}class Je extends Error{constructor(e){super(Nh(e)),this.notice=e}}const et=i=>new Je({kind:"unsupportedStatement",text:i}),J=i=>new Je({kind:"invalidExpression",text:i}),w1=(i,e)=>{const t=e&&[...e.keys()].find(n=>n!==i&&n.toLowerCase()===i.toLowerCase());return new Je(t?{kind:"unknownVariable",text:i,similar:t}:{kind:"unknownVariable",text:i})},gb=()=>new Je({kind:"divisionByZero"}),xs=new Map;function pb(i,e){xs.set(i,e)}const Fh=()=>[...xs];function Au(i){return i instanceof Je?i.notice:{kind:"other",text:i instanceof Error?i.message:String(i)}}function fb(i){if(i===0)return"0";if(!Number.isFinite(i))return Number.isNaN(i)?"nan":i>0?"inf":"-inf";const e=Math.floor(Math.log10(Math.abs(Number(i.toPrecision(12)))));if(e<-4||e>=12){const[n,a]=i.toExponential(11).split("e"),s=n.includes(".")?n.replace(/0+$/,"").replace(/\.$/,""):n,r=Number(a);return`${s}e${r<0?"-":"+"}${String(Math.abs(r)).padStart(2,"0")}`}const t=i.toFixed(Math.max(0,11-e));return t.includes(".")?t.replace(/0+$/,"").replace(/\.$/,""):t}function Pu(i){return Number.isFinite(i)&&Math.round(i)===i?i.toFixed(1):fb(i)}function _e(i){switch(i.kind){case"int":return String(i.value);case"double":return Pu(i.value);case"string":return i.value;case"boolean":return String(i.value);case"intArray":return"["+i.value.map(String).join(", ")+"]";case"doubleArray":return"["+i.value.map(Pu).join(", ")+"]";case"stringArray":return"["+i.value.join(", ")+"]";case"booleanArray":return"["+i.value.map(String).join(", ")+"]";case"grid":return"["+bb(i).join(", ")+"]";case"reader":return`${i.className}(${i.file})`;case"writer":return`PrintWriter(${i.file})`;case"null":return"null"}}function bb(i){return i.value.map(e=>"["+e.map(t=>_e(Lo(i.elementType,t))).join(", ")+"]")}function Lo(i,e){switch(i){case"int":return{kind:"int",value:e};case"double":return{kind:"double",value:e};case"string":return{kind:"string",value:e};case"boolean":return{kind:"boolean",value:e}}}function Du(i){return i==="string"?"":i==="boolean"?!1:0}const vs=new WeakMap;let xb=0;function Bu(i){const e=s=>({int:"I",double:"D",boolean:"Z",string:"Ljava.lang.String;"})[s],t=i.kind==="grid"?"[["+e(i.elementType):i.kind==="intArray"?"[I":i.kind==="doubleArray"?"[D":i.kind==="booleanArray"?"[Z":i.kind==="stringArray"?"[Ljava.lang.String;":void 0;if(!t||!("value"in i))return _e(i);const n=i.value;let a=vs.get(n);return a||(a=(Math.imul(++xb,2654435761)>>>0&2147483647).toString(16),vs.set(n,a)),t+"@"+a}function Ou(i,e){const t=vs.get(i);t&&vs.set(e,t)}function Ya(i){return i.kind==="intArray"||i.kind==="doubleArray"||i.kind==="stringArray"||i.kind==="booleanArray"||i.kind==="grid"}function vb(i){return i.kind==="int"||i.kind==="double"?i.value:NaN}const Tt=i=>({kind:"int",value:i}),_t=i=>({kind:"double",value:i}),o0=i=>i!==void 0&&/\s/u.test(i),ys=i=>new RegExp("\\p{L}","u").test(i),ci=i=>new RegExp("\\p{N}","u").test(i);function xi(i){const e=Array.from(i);return e.length===0||!(ys(e[0])||e[0]==="_")?!1:e.every(t=>ys(t)||ci(t)||t==="_")}function nn(i){switch(i.toLowerCase()){case"int":return"int";case"double":return"double";case"string":return"string";case"char":return"string";case"boolean":case"bool":return"boolean";default:return}}function Mu(i){return i.kind==="int"?"int":i.kind==="double"?"double":i.kind==="boolean"?"boolean":"string"}function ut(i){const e=Array.from(i);if(e.length===3&&e[0]==="'"&&e[2]==="'")return e[1];if(e.length<2||e[0]!=='"'||e[e.length-1]!=='"')return;const t=e.slice(1,-1).join("");if(/^(?:[^"\\]|\\.)*$/u.test(t))return t.replaceAll('\\"','"').replaceAll("\\n",` -`)}function Zu(i){return i.replaceAll("(int)","").replaceAll("(double)","").trim()}function l0(i){const e=new Array(i.length).fill(!1);let t=0,n=!1,a=!1;return i.forEach((s,r)=>{if(n){a?a=!1:s==="\\"?a=!0:s==='"'&&(n=!1);return}switch(s){case'"':n=!0;break;case"(":case"[":t+=1;break;case")":case"]":t-=1;break;default:e[r]=t===0}}),e}function ws(i,e){const t=Array.from(i),n=Array.from(e),a=l0(t),s=[];let r=[],o=0;for(;ot[o+m]===u)&&a.slice(o,l).every(Boolean)){s.push(r.join("").trim()),r=[],o=l;continue}r.push(t[o]),o+=1}return s.push(r.join("").trim()),s}function yb(i){const e=Array.from(i),t=l0(e);for(let n=0;n=","<=","==","!="].includes(o)&&(a=o)}if(a===void 0&&(e[n]==="<"||e[n]===">")&&(a=e[n]),a===void 0)continue;const s=e.slice(0,n).join("").trim(),r=e.slice(n+a.length).join("").trim();return{lhs:s,op:a,rhs:r}}}function rr(i,e){let t=0,n=!1,a=!1;for(let s=e;se.length||!t.every((r,o)=>e[a+o]===r))continue;const s=a+t.length-1;if(rr(e,s)===e.length-1)return{lhs:e.slice(0,a).join("").trim(),rhs:e.slice(s+1,-1).join("").trim()}}}function ma(i){const e=i.trim();for(const t of["if","while","until","switch"]){if(!e.startsWith(t))continue;const n=e.slice(t.length);if(!(n===""||o0(n[0])||n[0]==="("))continue;let a=n.trim();const s=Rh(a);return s!==void 0&&(a=s),a===""?"true":a}return e===""?"true":e}function z1(i){const e=i.trim(),t=e.indexOf("[");if(!e.endsWith("]")||t<0)return;const n=e.slice(0,t).trim();if(!xi(n))return;const a=[];let s=t;for(;s2))return{arrayName:n,indexExpressions:a}}function zb(i){const e=i.trim();if(!e.endsWith(")"))return;const t=/^([A-Za-z_]\w*(?:\s*\[[^\[\]]*\])*|"(?:[^"\\]|\\.)*")\s*\.\s*([A-Za-z_]\w*)\s*\(/u.exec(e);if(!t)return;const n=Array.from(e),a=Array.from(t[0]).length-1;if(rr(n,a)!==n.length-1)return;const s=n.slice(a+1,-1).join("").trim();return{target:t[1],method:t[2],args:s===""?[]:ws(s,",")}}function Lu(i){return xi(i)||z1(i)!==void 0}function Or(i){const e=[];let t="",n=!1,a=!1,s=0;for(const r of i){if(a){t+=r,a=!1;continue}if(r==="\\"){t+=r,a=!0;continue}if(r==='"'){n=!n,t+=r;continue}if(!n&&r==="("&&(s+=1),!n&&r===")"&&(s-=1),r==="+"&&!n&&s===0){e.push(t),t="";continue}t+=r}if(n)throw J(i);return e.push(t),e}function Ib(i){const e=[];let t=0,n="";for(const a of i){if(a==="{"&&(t+=1),a==="}"&&(t-=1),a===","&&t===0){e.push(n),n="";continue}n+=a}return n.trim()!==""&&e.push(n),e}function Wu(i){const e=Array.from(i),t=[];let n=0;for(;n1)throw J(i)}else if(!ci(e[n]))break;n+=1}const o=e.slice(s,n).join("");if(o==="."||!/^[0-9]*\.?[0-9]*$/.test(o))throw J(i);t.push({t:"number",literal:o,value:Number(o)});continue}if(ys(a)||a==="_"){const s=n;for(;n=0&&s=0&&o=0&&s|&&|\|\||^\s*!/u.test(e)}function t1(i){let e=i.trim();for(;e.endsWith(";");)e=e.slice(0,-1).trim();return e}function Nu(i){const e=i.slice(0,3);for(;e.length<3;)e.push("");return e}function Eo(i){const e=i.map(t=>t1(t).trim());return e.length===1&&e[0].includes(";")?Nu(e[0].split(";").map(t=>t.trim())):Nu(e)}const ht=i=>i.frame?{frame:i.frame,callPath:i.callPath}:{};function $t(i,e=[],t={}){const n=[],a=s=>n.push(t.frame?{...s,...t}:s);return i.forEach((s,r)=>{const o=[...e,r],l=s.textLines.join(" ").trim();switch(s.type){case T.anweisung:l!==""&&l!=="ø"&&a({path:o,text:l,kind:"statement"});break;case T.verzweigung:a({path:o,text:l||"true",kind:"branch",cases:s.cases});break;case T.fallauswahl:a({path:o,text:l||"0",kind:"switchSelection",cases:s.cases});break;case T.forSchleife:a({path:o,text:l,kind:"forLoopStart",loopBody:s.loopBody,forParts:Eo(s.textLines)});break;case T.whileSchleife:a({path:o,text:l||"true",kind:"whileLoop",loopBody:s.loopBody});break;case T.doUntilSchleife:a({path:o,text:l||"true",kind:"doUntilLoop",loopBody:s.loopBody});break;case T.endlosschleife:a({path:o,text:l||"true",kind:"infiniteLoop",loopBody:s.loopBody});break;case T.aussprung:a({path:o,text:l,kind:"jump"});break;case T.aufruf:l!==""&&l!=="ø"&&a({path:o,text:l,kind:"call"});break}}),n}function Sb(i,e){const t=i.trim().replaceAll(",",".");switch(e){case"int":if(!/^[+-]?[0-9]+$/.test(t))throw new Je({kind:"wholeNumberExpected"});return Tt(Number(t));case"double":if(!/^[+-]?([0-9]+\.?[0-9]*|\.[0-9]+)([eE][+-]?[0-9]+)?$/.test(t))throw new Je({kind:"numberExpected"});return _t(Number(t));case"string":return{kind:"string",value:i};case"boolean":switch(t.toLowerCase()){case"true":case"wahr":return{kind:"boolean",value:!0};case"false":case"falsch":return{kind:"boolean",value:!1};default:throw new Je({kind:"booleanExpected"})}}}function Fu(){return{stepIndex:0,variables:new Map,outputLines:[],isHalted:!1,files:new Map,robotActions:[]}}function Tb(i,e){for(let t=0;tt===e.path[n])}function St(i){const e=/^(void|int|double|String|boolean)\s+([A-Za-z_]\w*)\s*\((.*)\)$/u.exec(t1(i));if(!e)return;const t=[];if(e[3].trim()!=="")for(const n of e[3].split(",")){const a=/^(int|double|String|boolean|char)\s*((?:\[\s*\]){0,2})\s+([A-Za-z_]\w*)$/u.exec(n.trim());if(!a)return;const s=(a[2].match(/\[/gu)??[]).length;t.push({type:nn(a[1]),name:a[3],...s>0?{dims:s}:{}})}return{returnType:nn(e[1]),name:e[2],params:t}}function Jh(i){const e=/^(?:(?:(int|double|String|boolean)\s+)?([A-Za-z_]\w*)\s*=\s*)?([A-Za-z_]\w*)\s*\((.*)\)$/u.exec(t1(i));if(e)return{targetType:e[1]?nn(e[1]):void 0,target:e[2],name:e[3],args:e[4].trim()===""?[]:ws(e[4],",")}}function zs(i){var t,n;const e=t1(i);return((t=St(e))==null?void 0:t.name)??((n=Jh(e))==null?void 0:n.name)??e.replace(/\(\s*\)$/u,"").trim()}class Bi{constructor(e,t=()=>{}){y(this,"steps");y(this,"state",Fu());y(this,"nextFrame",1);y(this,"callDepth",0);y(this,"frames",new Map);y(this,"peeking",!1);y(this,"robotSensors",{});y(this,"pseudocode");y(this,"decided");y(this,"afterOutput",!1);this.resolveSubprogram=t,this.steps=$t(e.elements),this.pseudocode=!!e.pseudocode}get currentStepPath(){const e=this.steps[this.state.stepIndex];return(e==null?void 0:e.callPath)??(e==null?void 0:e.path)}get canStep(){return!this.state.isHalted&&!this.state.inputRequest&&this.state.stepIndex ${_e(n)}`}catch(n){this.state.inputErrorNotice=Au(n);return}this.state.inputRequest=void 0,this.state.inputErrorNotice=void 0,this.state.stepIndex+=1,this.state.notice=this.finishedIfAtEnd()}}provideDecision(e){var s;if(((s=this.state.inputRequest)==null?void 0:s.valueType)==="string")return this.state.inputRequest=void 0,this.decided=e.trim(),this.step();const t=e.trim().toLowerCase(),n=["true","wahr","ja","yes","sim","verdadeiro"].includes(t),a=["false","falsch","nein","no","não","nao","falso"].includes(t);if(!n&&!a){this.state.inputErrorNotice={kind:"booleanExpected"};return}this.state.inputRequest=void 0,this.state.inputErrorNotice=void 0,this.decided=n,this.step()}condition(e){if(!this.pseudocode)return this.evaluateBool(e);const t=this.decided;if(typeof t=="boolean")return this.decided=void 0,t;this.state.inputRequest={variableName:"",valueType:"boolean",prompt:`${e} (true/false)`,decision:!0},this.state.inputErrorNotice=void 0,this.state.notice=void 0}finishedIfAtEnd(){return this.state.stepIndex>=this.steps.length?{kind:"finished"}:void 0}splice(e){this.steps.splice(this.state.stepIndex,1,...e)}noticeAfterEntering(e){return e.length>0?void 0:this.finishedIfAtEnd()}executeBranch(e){const t=e.cases;if(!t||t.length<2)throw et(e.text);const n=ma(e.text),a=this.condition(n);if(a===void 0)return;const s=a?0:1,r=$t(t[s].elements,[...e.path,s],ht(e));this.splice(r),this.state.lastTrace=`${n} -> ${a}`,this.state.notice=this.noticeAfterEntering(r)}executeSwitchSelection(e){const t=e.cases;if(!t||t.length===0)throw et(e.text);const n=ma(e.text);let a;if(this.pseudocode){const r=this.decided;if(typeof r!="string"){const l=t.map(u=>u.name).join(" / ");this.state.inputRequest={variableName:"",valueType:"string",prompt:`${n} (${l})`,decision:!0},this.state.notice=void 0;return}this.decided=void 0;const o=t.findIndex(l=>l.name.trim().toLowerCase()===r.toLowerCase());a=o>=0?o:t.length-1}else a=Tb(this.evaluateSwitchSelector(n),t)??t.length-1;const s=$t(t[a].elements,[...e.path,a],ht(e));this.splice(s),this.state.lastTrace=`${n} -> ${t[a].name}`,this.state.notice=this.noticeAfterEntering(s)}executeForLoopStart(e){if(this.pseudocode)return this.splice([{...e,kind:"whileLoop"}]);const t=Eo(e.forParts??[e.text]);t[0]!==""&&this.executeStatement(t[0]),this.splice([{...ht(e),path:e.path,text:t[1],kind:"forLoopCondition",loopBody:e.loopBody,forParts:t}])}executeForLoopCondition(e){const t=Eo(e.forParts??[e.text]),n=t[1]===""?"true":t[1],a=this.condition(n);if(a!==void 0)if(this.state.lastTrace=`${n} -> ${a}`,a){const s=$t(e.loopBody??[],[...e.path,0],ht(e));this.splice([...s,{...ht(e),path:e.path,text:t[2],kind:"forLoopIncrement",loopBody:e.loopBody,forParts:t},{...ht(e),path:e.path,text:t[1],kind:"forLoopCondition",loopBody:e.loopBody,forParts:t}])}else this.splice([]),this.state.notice=this.finishedIfAtEnd()}executeForLoopIncrement(e){const t=e.text.trim();t!==""&&this.executeIncrement(t),this.splice([])}executeWhileLoop(e){const t=ma(e.text),n=this.condition(t);if(n!==void 0)if(this.state.lastTrace=`${t} -> ${n}`,n){const a=$t(e.loopBody??[],[...e.path,0],ht(e));this.splice([...a,{...ht(e),path:e.path,text:e.text,kind:"whileLoop",loopBody:e.loopBody}]),this.state.notice=this.noticeAfterEntering(a)}else this.splice([]),this.state.notice=this.finishedIfAtEnd()}enterDoUntilLoop(e){const t=$t(e.loopBody??[],[...e.path,0],ht(e));this.splice([...t,{...ht(e),path:e.path,text:e.text,kind:"doUntilCondition",loopBody:e.loopBody}]),this.state.notice=this.noticeAfterEntering(t)}executeDoUntilCondition(e){const t=ma(e.text),n=this.condition(t);if(n!==void 0)if(this.state.lastTrace=`${t} -> ${n}`,n){const a=$t(e.loopBody??[],[...e.path,0],ht(e));this.splice([...a,{...ht(e),path:e.path,text:e.text,kind:"doUntilCondition",loopBody:e.loopBody}])}else this.splice([]),this.state.notice=this.finishedIfAtEnd()}enterInfiniteLoop(e){const t=$t(e.loopBody??[],[...e.path,0],ht(e));this.splice([...t,{...ht(e),path:e.path,text:e.text,kind:"infiniteLoop",loopBody:e.loopBody}]),this.state.lastTrace="true -> true",this.state.notice=t.length>0?void 0:{kind:"infiniteLoopWithoutBody"}}executeJump(e){const t=e.frame??0,n=o=>o.lengthl===e.path[u]);let a=this.steps.length,s="end";for(let o=this.state.stepIndex+1;o ${s}`,s==="return"&&this.finishFrame(r),this.state.notice=this.finishedIfAtEnd()}executeCall(e){const t=e.text,n=this.resolveSubprogram(zs(t));if(!n){this.splice([]),this.state.lastTrace=`${t} -> ?`,this.state.notice={kind:"subprogramNotFound",text:t},this.state.stepIndex>=this.steps.length&&(this.state.notice={kind:"finished"});return}const a=Jh(t),s=St(n.caption);if(s?((a==null?void 0:a.args.length)??0)!==s.params.length||(a==null?void 0:a.target)!==void 0&&!s.returnType:a!==void 0&&(a.args.length>0||a.target!==void 0))throw new Je({kind:"callArguments",text:(s==null?void 0:s.name)??zs(t)});if(this.callDepth>=hb)throw new Je({kind:"callTooDeep"});const o=new Map,l=[];s==null||s.params.forEach((d,h)=>{const g=a.args[h].trim();if(!d.dims){o.set(d.name,this.evaluateExpression(g,d.type));return}const f=this.state.variables.get(g);if(!f)throw/^[A-Za-z_]\w*$/u.test(g)?w1(g,this.state.variables):J(g);if(!(d.dims===1?f.kind===`${d.type}Array`:f.kind==="grid"&&f.elementType===d.type))throw J(g);o.set(d.name,f),l.push({param:d.name,callerName:g})}),this.callDepth+=1;const u={frame:this.nextFrame++,callPath:e.callPath??e.path};s&&(this.frames.set(u.frame,{saved:this.state.variables,header:s,call:a,references:l}),this.state.variables=o);const m=$t(n.elements,[],u);this.splice([...m,{...u,path:e.path,text:t,kind:"callEnd"}]);const c=s==null?void 0:s.params.map((d,h)=>`${d.name} = ${d.dims?a.args[h].trim():_e(o.get(d.name))}`).join(", ");this.state.lastTrace=c?`${t} -> ${c}`:`${t} -> call`}executeCallEnd(e){this.callDepth-=1,this.splice([]),this.state.lastTrace=`${e.text} -> return`,this.finishFrame(e),this.state.notice=this.finishedIfAtEnd()}executeReturn(e){const t=e.frame??0,n=t1(e.text).slice(6).trim(),a=this.frames.get(t);if(a&&n!==""){if(!a.header.returnType)throw J(e.text);a.returnValue=this.evaluateExpression(n,a.header.returnType)}const s=a!=null&&a.returnValue?`${e.text} -> ${_e(a.returnValue)}`:`${e.text} -> return`;if(t===0){this.steps.splice(this.state.stepIndex),this.state.lastTrace=s,this.state.notice={kind:"finished"};return}let r=this.state.stepIndex+1;for(;r0?new Map(t.saved):t.saved;for(const m of t.references){const c=this.state.variables.get(m.param);c&&n.set(m.callerName,c)}this.state.variables=n;const a=t.returnValue;if(t.header.returnType&&!a)throw new Je({kind:"missingReturn",text:t.header.name});const s=(l=t.call)==null?void 0:l.target;if(!s||!a)return;let r=(u=t.call)==null?void 0:u.targetType;if(!r)try{r=this.inferTargetValueType(s)}catch{r=t.header.returnType}const o=r==="double"&&a.kind==="int"?_t(a.value):r==="string"?{kind:"string",value:_e(a)}:a;if(Mu(o)!==r)throw J(e.text);this.assignValue(o,s),this.state.lastTrace=`${s} = ${e.text.slice(e.text.indexOf("=")+1).trim()} -> ${_e(o)}`}executeStatement(e){const t=this.state,n=e.trim(),a=n.toLowerCase(),s=this.afterOutput;if(this.afterOutput=!1,a.startsWith("input:")){t.inputRequest=this.parseInputRequest(n,s),t.outputLineOpen=!1,t.inputErrorNotice=void 0;return}const r=/^System\s*\.\s*out\s*\.\s*(println|print)\s*\(([\s\S]*)\)\s*;?$/u.exec(n);if(a.startsWith("output:")||a.startsWith("print:")||r){const v=r?r[2]:n.slice(a.startsWith("output:")?7:6),w=this.peek(()=>this.renderOutputExpression(v)),z=v.trim()===""?"":this.evaluateOutputExpression(v),I=(r==null?void 0:r[1])==="print",S=I&&z.endsWith(` -`),[k,...P]=(S?z.slice(0,-1):z).split(` -`);t.outputLineOpen&&t.outputLines.length?t.outputLines[t.outputLines.length-1]+=k:t.outputLines.push(k),t.outputLines.push(...P),t.outputLineOpen=I&&!S,this.afterOutput=!0,t.lastTrace=`${w} -> ${z}`;return}const o=lb(n);if(o){this.executeMBotCommand(o.method,o.args,n);return}if(this.executeFileStatement(n))return;if(n.endsWith("++")||n.endsWith("--")||n.includes("+=")||n.includes("-=")){this.executeIncrement(n);return}const l=/^(?:final\s+)?([A-Za-z]+)\s+([A-Za-z_]\w*(?:\s*,\s*[A-Za-z_]\w*)*)$/u.exec(t1(n).trim()),u=l?nn(l[1]):void 0;if(l&&u){const v=l[2].split(",").map(w=>w.trim());for(const w of v)t.variables.set(w,Lo(u,Du(u)));t.lastTrace=v.map(w=>`${w} = ${_e(t.variables.get(w))}`).join(", ");return}const m=n.indexOf("=");if(m<0)throw et(n);const c=n.slice(0,m).trim(),d=n.slice(m+1),h=this.parseArrayDeclaration(c,d);if(h){t.variables.set(h.name,h.value),t.lastTrace=`${h.name} = new ${h.typeName}[${h.count}]`;return}const g=this.parseAssignmentTarget(c);let f;try{f=this.peek(()=>this.renderNumericExpression(d))}catch{f=d.trim()}let b=g.valueType;if(!b)try{b=this.inferTargetValueType(g.variableName)}catch{b="int"}const x=this.evaluateExpression(d,b);this.assignValue(x,g.variableName),t.lastTrace=`${g.variableName} = ${f} -> ${_e(x)}`}executeMBotCommand(e,t,n){var r;if((r=Di[e])!=null&&r.text){const o=Di[e];if(t.length!==o.args+1)throw J(n);const l=fs(e,t.slice(0,-1).map(c=>this.evaluateDouble(c)));if(!l)throw J(n);const u=Zo(e,l,this.evaluateOutputExpression(t[t.length-1])),m=o.choices;if(m&&!m.includes(u.text??""))throw J(`${n} (${m.join(", ")})`);this.state.robotActions.push(u),this.state.lastTrace=`${n} -> ${u.label}`;return}if((e==="forward"||e==="backward")&&t.length===2){const o=this.evaluateOutputExpression(t[1]),l=ab(e,this.evaluateDouble(t[0]),o);if(!l)throw J(`${n} (${ib.map(u=>`"${u}"`).join(", ")})`);this.state.robotActions.push(l),this.state.lastTrace=`${n} -> ${l.label}`;return}const a=fs(e,t.map(o=>this.evaluateDouble(o)));if(!a)throw J(n);const s=Zo(e,a);this.state.robotActions.push(s),this.state.lastTrace=`${n} -> ${s.label}`}executeFileStatement(e){const t=this.state,n=t1(e).trim(),a=/^(?:(Scanner|BufferedReader|PrintWriter)\s+)?([A-Za-z_]\w*)\s*=\s*new\s+(Scanner|BufferedReader|PrintWriter)\s*\(([\s\S]*)\)$/u.exec(n);if(a){const[,m,c,d,h]=a;if(m&&m!==d)throw J(n);const g=d==="Scanner"?/^new\s+File\s*\(([\s\S]+)\)$/u.exec(h.trim()):d==="BufferedReader"?/^new\s+FileReader\s*\(([\s\S]+)\)$/u.exec(h.trim()):/^(?:new\s+(?:File|FileWriter)\s*\(([\s\S]+)\)|([\s\S]+))$/u.exec(h.trim());if(!g)throw et(n);const f=this.fileNameValue(g[1]??g[2]);if(d==="PrintWriter")t.variables.set(c,{kind:"writer",file:f,text:""});else{const x=this.fileContent(f).split(/\r?\n/u);x[x.length-1]===""&&x.pop(),t.variables.set(c,{kind:"reader",className:d,file:f,lines:x,next:0})}return t.lastTrace=`${c} = new ${d}(${f})`,!0}const s=/^Files\s*\.\s*writeString\s*\(\s*(?:Path\s*\.\s*of|Paths\s*\.\s*get)\s*\(([^()]+)\)\s*,([\s\S]+)\)$/u.exec(n);if(s){const m=this.fileNameValue(s[1]),c=this.evaluateOutputExpression(s[2]);return t.files.set(m,c),t.lastTrace=`${m} ← ${JSON.stringify(c)}`,!0}const r=/^([A-Za-z_]\w*)\s*\.\s*(println|print|close)\s*\(([\s\S]*)\)$/u.exec(n),o=r&&t.variables.get(r[1]);if(!r||!o)return!1;if(o.kind==="null")throw new Je({kind:"nullValue",text:r[1]});if(o.kind==="reader"&&r[2]==="close")return t.lastTrace=`${r[1]}.close()`,!0;if(o.kind!=="writer")return!1;if(r[2]==="close")return t.files.set(o.file,o.text),t.lastTrace=`${o.file} ← ${JSON.stringify(o.text)}`,!0;const l=r[3].trim()===""?"":this.evaluateOutputExpression(r[3]),u=r[2]==="println"?l+` -`:l;return t.variables.set(r[1],{...o,text:o.text+u}),t.lastTrace=`${r[1]}.${r[2]}(${JSON.stringify(l)})`,!0}fileNameValue(e){const t=e.trim(),n=ut(t);if(n!==void 0)return n;const a=this.evaluateReference(t);if((a==null?void 0:a.kind)==="string")return a.value;throw J(t)}fileContent(e){const t=this.state.files.get(e)??xs.get(e);if(t===void 0)throw new Je({kind:"fileNotFound",text:e});return t}readerMethod(e,t,n,a){if(n.args.length)throw J(a);const s=t.next0?"+":"-";if(r.kind==="int"){t.set(s,Tt(r.value+a)),this.state.lastTrace=`${s} = ${r.value} ${o} 1 -> ${r.value+a}`;return}if(r.kind==="double"){const l=r.value+a;t.set(s,_t(l)),this.state.lastTrace=`${s} = ${_e(r)} ${o} 1 -> ${_e(_t(l))}`;return}throw et(e)}for(const[n,a]of[["+=",1],["-=",-1]]){const s=e.indexOf(n);if(s<0)continue;const r=e.slice(0,s).trim(),o=e.slice(s+2),l=t.get(r);if(!xi(r)||!l)throw et(e);const u=a>0?"+":"-";if(l.kind==="int"){const m=this.evaluateInt(o),c=l.value+a*m;t.set(r,Tt(c)),this.state.lastTrace=`${r} = ${l.value} ${u} ${m} -> ${c}`;return}if(l.kind==="double"){const m=this.evaluateDouble(o),c=l.value+a*m;t.set(r,_t(c)),this.state.lastTrace=`${r} = ${_e(l)} ${u} ${_e(_t(m))} -> ${_e(_t(c))}`;return}throw et(e)}this.executeStatement(e)}parseAssignmentTarget(e){if(z1(e))return{variableName:e.trim()};const t=e.split(/\s+/u).filter(Boolean);let n,a;if(t.length===1)n=t[0];else if(t.length===2&&nn(t[0]))n=t[1],a=nn(t[0]);else if(t.length===3&&t[0]==="const"&&nn(t[1]))n=t[2],a=nn(t[1]);else throw et(e);if(!Lu(n))throw et(e);return{variableName:n,valueType:a}}parseInputRequest(e,t=!1){const n=e.slice(6).trim(),a=/^(\S+)(?:\s+(\S+))?(?:\s+([\s\S]*))?$/u.exec(n);if(!a)throw et(e);const s=[a[1],a[2],a[3]].filter(c=>c!==void 0);let r,o,l;const u=nn(s[0]);if(s.length>=2&&u?(r=s[1],o=u,l=(s[2]??"").trim()):(r=s[0],o=this.inferTargetValueType(r),l=(s[1]??"").trim()),!Lu(r))throw et(e);const m=ut(l)??l;return m===""&&t?this.state.outputLineOpen?{variableName:r,valueType:o,prompt:"",continuesLine:!0}:{variableName:r,valueType:o,prompt:""}:{variableName:r,valueType:o,prompt:m===""?`${r}:`:m}}parseArrayDeclaration(e,t){const n=e.split(/\s+/u).filter(Boolean);if(n.length!==2||!n[0].endsWith("[]"))return;const a=n[0].endsWith("[][]"),s=n[0].slice(0,a?-4:-2),r=nn(s),o=n[1];if(!r||!xi(o))throw et(e);if(a)return this.parseGridDeclaration(o,s,r,t);const l=t.trim();if(l.startsWith("{")&&l.endsWith("}")){const h=l.slice(1,-1).split(",").map(f=>f.trim());let g;switch(r){case"int":g={kind:"intArray",value:h.map(f=>this.evaluateInt(f))};break;case"double":g={kind:"doubleArray",value:h.map(f=>this.evaluateDouble(f))};break;case"string":g={kind:"stringArray",value:h.map(f=>ut(f)??this.evaluateOutputExpression(f))};break;case"boolean":g={kind:"booleanArray",value:h.map(f=>this.evaluateBool(f))};break}return{name:o,typeName:s,count:h.length,value:g}}const u=`new ${s}[`;if(!l.startsWith(u)){const h=this.evaluateStringMethod(l);if((h==null?void 0:h.kind)==="stringArray"&&r==="string")return{name:o,typeName:s,count:h.value.length,value:h}}if(!l.startsWith(u)||!l.endsWith("]"))throw et(t);const m=l.slice(u.length,-1),c=this.evaluateInt(m);if(c<0)throw J(m);const d=r==="int"?{kind:"intArray",value:new Array(c).fill(0)}:r==="double"?{kind:"doubleArray",value:new Array(c).fill(0)}:r==="boolean"?{kind:"booleanArray",value:new Array(c).fill(!1)}:{kind:"stringArray",value:new Array(c).fill("")};return{name:o,typeName:s,count:c,value:d}}parseGridDeclaration(e,t,n,a){var c;const s=a.trim(),r=d=>{switch(n){case"int":return this.evaluateInt(d);case"double":return this.evaluateDouble(d);case"boolean":return this.evaluateBool(d);case"string":return ut(d.trim())??this.evaluateOutputExpression(d)}};if(s.startsWith("{")&&s.endsWith("}")){const d=Ib(s.slice(1,-1)).map(h=>{const g=h.trim();if(!g.startsWith("{")||!g.endsWith("}"))throw J(g);return g.slice(1,-1).trim()===""?[]:g.slice(1,-1).split(",").map(f=>r(f.trim()))});return{name:e,typeName:t,count:`${d.length}][${((c=d[0])==null?void 0:c.length)??0}`,value:{kind:"grid",elementType:n,value:d}}}const o=new RegExp(String.raw`^new\s+${t}\s*\[(.+)\]\s*\[(.+)\]$`,"u").exec(s);if(!o)throw et(a);const l=this.evaluateInt(o[1]),u=this.evaluateInt(o[2]);if(l<0)throw J(o[1]);if(u<0)throw J(o[2]);const m={kind:"grid",elementType:n,value:Array.from({length:l},()=>new Array(u).fill(Du(n)))};return{name:e,typeName:t,count:`${l}][${u}`,value:m}}arrayIndex(e){const t=this.evaluateInt(e);if(t<0)throw J(e);return t}evaluateReference(e){const t=e.trim(),n=this.state.variables.get(t);if(n)return n;const a=this.evaluateStringMethod(t);if(a)return a;const s=/^\(\s*char\s*\)\s*(.+)$/su.exec(t);if(s){const o=this.evaluateInt(s[1]);if(!(o>=0&&o<=1114111))throw J(t);return{kind:"string",value:String.fromCodePoint(o)}}const r=z1(t);if(r)return this.valueInArray(r.arrayName,r.indexExpressions.map(o=>this.arrayIndex(o)))}evaluateStringMethod(e){const t=zb(e);if(!t)return;const n=this.evaluateStaticCall(e,t);if(n)return n;const a=this.state.variables.get(t.target.trim());if((a==null?void 0:a.kind)==="reader")return this.readerMethod(t.target.trim(),a,t,e);if((a==null?void 0:a.kind)==="null")throw new Je({kind:"nullValue",text:t.target.trim()});const s=ut(t.target)??this.stringValueOf(t.target);if(s===void 0)return;const r=t.args,o=d=>{const h=r[d];if(h===void 0)throw J(e);const g=ut(h.trim());if(g!==void 0)return g;const f=this.evaluateReference(h);if((f==null?void 0:f.kind)==="string")return f.value;throw J(h)},l=d=>{if(r[d]===void 0)throw J(e);return this.evaluateInt(r[d])},u=d=>{if(r.length!==d)throw J(e)},m=Array.from(s),c=(d,h)=>{if(d<0||d>h)throw J(e);return d};switch(t.method){case"length":return u(0),Tt(m.length);case"charAt":return u(1),{kind:"string",value:m[c(l(0),m.length-1)]};case"substring":{if(r.length!==1&&r.length!==2)throw J(e);const d=c(l(0),m.length),h=r.length===2?c(l(1),m.length):m.length;if(h0&&h[h.length-1]==="";)h.pop();return{kind:"stringArray",value:h}}default:return}}evaluateStaticCall(e,t){const n=()=>{if(t.args.length!==1)throw J(e);return t.args[0]},a=s=>{const r=ut(s.trim());if(r!==void 0)return r;const o=this.evaluateReference(s);if((o==null?void 0:o.kind)==="string")return o.value;throw J(s)};switch(`${t.target}.${t.method}`){case"Integer.parseInt":{const s=a(n()).trim();if(!/^[+-]?\d+$/u.test(s))throw new Je({kind:"wholeNumberExpected"});return Tt(Number(s))}case"Double.parseDouble":{const s=Number(a(n()).trim());if(!Number.isFinite(s))throw new Je({kind:"numberExpected"});return _t(s)}case"String.valueOf":return{kind:"string",value:this.evaluateOutputExpression(n())};case"Arrays.toString":case"Arrays.deepToString":{const s=this.state.variables.get(n().trim());if(!s||!Ya(s))throw J(e);return s.kind==="grid"&&t.method==="toString"?{kind:"string",value:"["+s.value.map(o=>Bu({kind:`${s.elementType}Array`,value:o})).join(", ")+"]"}:{kind:"string",value:_e(s)}}case"Files.readString":{const s=/^(?:Path\s*\.\s*of|Paths\s*\.\s*get)\s*\(\s*("(?:[^"\\]|\\.)*")\s*\)$/u.exec(n().trim());if(!s)throw J(e);const r=ut(s[1]),o=xs.get(r);if(o===void 0)throw new Je({kind:"fileNotFound",text:r});return{kind:"string",value:o}}default:return}}stringValueOf(e){const t=e.trim(),n=this.state.variables.get(t);if(n)return n.kind==="string"?n.value:void 0;const a=z1(t);if(!a)return;const s=this.valueInArray(a.arrayName,a.indexExpressions.map(r=>this.arrayIndex(r)));return s.kind==="string"?s.value:void 0}substituteStringCalls(e){if(!e.includes("("))return e;let t="",n=e;const a=/([A-Za-z_]\w*(?:\[[^\[\]]*\])*|"(?:[^"\\]|\\.)*")\s*\.\s*(length|indexOf|lastIndexOf|compareTo|charAt|parseInt|parseDouble)\s*\(/u;for(let s=a.exec(n);s;s=a.exec(n)){const r=s.index+s[0].length-1,o=rr(Array.from(n),Array.from(n.slice(0,r)).length);if(o===void 0)break;const l=Array.from(n),u=l.slice(Array.from(n.slice(0,s.index)).length,o+1).join(""),m=this.evaluateStringMethod(u),c=l.slice(0,Array.from(n.slice(0,s.index)).length).join(""),d=(m==null?void 0:m.kind)==="string"?Wo(m.value):void 0;(m==null?void 0:m.kind)==="int"?t+=c+String(m.value):(m==null?void 0:m.kind)==="double"?t+=c+(Number.isInteger(m.value)?m.value.toFixed(1):String(m.value)):d!==void 0?t+=c+String(d):t+=c+u,n=l.slice(o+1).join("")}return t+n}valueInArray(e,t){const n=this.state.variables.get(e);if(!n)throw w1(e,this.state.variables);const a=`${e}[${t.join("][")}]`;if(n.kind==="grid"){if(t.length!==2)throw J(a);const r=n.value[t[0]];if(!r||t[1]>=r.length)throw J(a);return Lo(n.elementType,r[t[1]])}if(t.length!==1)throw J(a);const s=t[0];if(!Ya(n))throw J(e);if(s>=n.value.length)throw J(a);switch(n.kind){case"intArray":return Tt(n.value[s]);case"doubleArray":return _t(n.value[s]);case"stringArray":return{kind:"string",value:n.value[s]};case"booleanArray":return{kind:"boolean",value:n.value[s]};default:throw J(e)}}inferTargetValueType(e){const t=e.trim(),n=this.state.variables.get(t);if(n)return Mu(n);const a=z1(t);if(a){const s=this.state.variables.get(a.arrayName);if(!s)throw w1(a.arrayName,this.state.variables);if(s.kind==="intArray")return"int";if(s.kind==="doubleArray")return"double";if(s.kind==="stringArray")return"string";if(s.kind==="booleanArray")return"boolean";if(s.kind==="grid")return s.elementType;throw J(a.arrayName)}throw et(e)}assignValue(e,t){const n=t.trim(),a=z1(n);if(!a){this.state.variables.set(n,e);return}const s=a.indexExpressions.map(u=>this.arrayIndex(u)),r=this.state.variables.get(a.arrayName);if(!r)throw w1(a.arrayName,this.state.variables);if(r.kind==="grid"){if(s.length!==2||s[0]>=r.value.length||s[1]>=r.value[s[0]].length)throw J(n);const u=r.elementType==="double"&&e.kind==="int"||e.kind===r.elementType?e.value:void 0;if(u===void 0||Ya(e))throw J(n);const m=r.value.map(c=>[...c]);m[s[0]][s[1]]=u,Ou(r.value,m),this.state.variables.set(a.arrayName,{...r,value:m});return}if(s.length!==1)throw J(n);const o=s[0];let l;if(r.kind==="intArray"&&e.kind==="int")l={kind:"intArray",value:[...r.value]};else if(r.kind==="doubleArray"&&(e.kind==="double"||e.kind==="int"))l={kind:"doubleArray",value:[...r.value]};else if(r.kind==="stringArray"&&e.kind==="string")l={kind:"stringArray",value:[...r.value]};else if(r.kind==="booleanArray"&&e.kind==="boolean")l={kind:"booleanArray",value:[...r.value]};else throw J(n);if(o>=l.value.length)throw J(n);l.value[o]=e.value,Ou(r.value,l.value),this.state.variables.set(a.arrayName,l)}evaluateOutputExpression(e){const t=this.withSensors(e).trim();if(Eu(t)&&Or(t).every(s=>ut(s.trim())===void 0)&&!this.evaluateReference(t))return String(this.evaluateBool(t));let n,a;for(const s of Or(this.withSensors(e))){const r=s.trim(),o=ut(r),l=o!==void 0?{kind:"string",value:o}:this.evaluateReference(r)??(Eu(r)?{kind:"boolean",value:this.evaluateBool(r)}:this.evaluateNumeric(r)),u=l.kind==="int"||l.kind==="double";if(a===void 0&&u){n?n=n.kind==="int"&&l.kind==="int"?Tt(n.value+l.value):_t(n.value+l.value):n=l;continue}a=(a??(n?_e(n):""))+Bu(l),n=void 0}return a??(n?_e(n):"")}renderOutputExpression(e){return Or(e).map(t=>{const n=t.trim();if(ut(n)!==void 0)return n;const a=this.evaluateReference(n);if(a)return _e(a);try{return this.renderNumericExpression(n)}catch{return n}}).join(" + ")}evaluateExpression(e,t){switch(t){case"int":return Tt(this.evaluateInt(e));case"double":return _t(this.evaluateDouble(e));case"string":{const n=e.trim(),a=ut(n);if(a!==void 0)return{kind:"string",value:a};if(n==="null")return{kind:"null"};const s=this.evaluateReference(n);return(s==null?void 0:s.kind)==="null"?s:s?{kind:"string",value:_e(s)}:{kind:"string",value:this.evaluateOutputExpression(e)}}case"boolean":return{kind:"boolean",value:this.evaluateBool(e)}}}evaluateNumeric(e){const{v:t,int:n}=this.parser(e).parseNumber();return n||Number.isFinite(t)&&Math.round(t)===t?Tt(t):_t(t)}parser(e){const t=this.withSensors(e);return new kb(Wu(Zu(this.substituteStringCalls(t))),this.state.variables)}withSensors(e){return mb(e,t=>this.robotSensors[t]??Pt[t].simulated)}evaluateInt(e){return this.parser(e).parseInt()}evaluateDouble(e){return this.parser(e).parseDouble()}evaluateBool(e){const t=this.withSensors(e).trim();if(t==="true")return!0;if(t==="false")return!1;const n=this.evaluateReference(t);if((n==null?void 0:n.kind)==="boolean")return n.value;const a=ws(t,"||");if(a.length>1)return a.some(u=>this.evaluateBool(u));const s=ws(t,"&&");if(s.length>1)return s.every(u=>this.evaluateBool(u));if(t.startsWith("!")&&!t.startsWith("!="))return!this.evaluateBool(t.slice(1));const r=Rh(t);if(r!==void 0)return this.evaluateBool(r);const o=wb(t);if(o)return this.evaluateComparison(o.lhs,"==",o.rhs);const l=yb(t);if(l)return this.evaluateComparison(l.lhs,l.op,l.rhs);if(this.stringOperand(t)!==void 0)throw J(t);return this.evaluateDouble(t)!==0}evaluateComparison(e,t,n){if((e.trim()==="null"||n.trim()==="null")&&(t==="=="||t==="!=")){const m=d=>{var h;return d.trim()==="null"||((h=this.evaluateReference(d))==null?void 0:h.kind)==="null"},c=m(e)===m(n);return t==="=="?c:!c}const a=this.booleanOperand(e),s=this.booleanOperand(n);if((a!==void 0||s!==void 0)&&(t==="=="||t==="!=")){const m=a??this.evaluateBool(e),c=s??this.evaluateBool(n);return t==="=="?m===c:m!==c}const r=this.stringOperand(e),o=this.stringOperand(n);let l,u;if(r!==void 0||o!==void 0){if(r===void 0||o===void 0)throw J(`${e} ${t} ${n}`);l=r,u=o}else l=this.evaluateDouble(e),u=this.evaluateDouble(n);switch(t){case"==":return l===u;case"!=":return l!==u;case"<":return l":return l>u;case">=":return l>=u;default:throw J(`${e} ${t} ${n}`)}}booleanOperand(e){const t=e.trim();if(t==="true")return!0;if(t==="false")return!1;const n=this.evaluateReference(t);return(n==null?void 0:n.kind)==="boolean"?n.value:void 0}stringOperand(e){const t=e.trim(),n=ut(t);if(n!==void 0)return n;const a=this.evaluateReference(t);return(a==null?void 0:a.kind)==="string"?a.value:void 0}evaluateSwitchSelector(e){const t=this.withSensors(e).trim(),n=ut(t);if(n!==void 0)return{kind:"text",value:n};const a=this.state.variables.get(t);if(a)switch(a.kind){case"int":return{kind:"int",value:a.value};case"double":return{kind:"int",value:Math.trunc(a.value)};case"string":return{kind:"text",value:a.value};default:throw J(t)}return/^[+-]?[0-9]+$/.test(t)?{kind:"int",value:Number(t)}:{kind:"int",value:this.evaluateInt(t)}}renderNumericExpression(e){return Wu(Zu(e)).map(t=>{if(t.t==="number")return t.literal;if(t.t==="identifier"){const n=this.state.variables.get(t.name);if(!n)throw w1(t.name,this.state.variables);return _e(n)}return t.t}).join(" ").replaceAll("( ","(").replaceAll(" )",")").replaceAll(" . ",".").replaceAll("[ ","[").replaceAll(" ]","]")}}const Gh={baseIndent:0,indentPerLevel:4,includeDiagramTextAsComments:!1,includeEmptyElseBranch:!0,pseudocodeNote:"Pseudocode – not a runnable program"};function Is(i,e,t={},n=[]){const a=u0(i,e,t);let s="";e==="javascript"&&(s+=`"use strict"; + pass`],bi=(i,e)=>Array.from({length:e},(t,n)=>i>>>8*n&255);function Q3(i){let e=0;for(let t=0;t>>0;return bi(e,4)}const Pr=(i,e)=>s0([1,0,Ph,i,...bi(e.length,2),...e]);function U3(i,e=H3){const t=new TextEncoder().encode(i),n=(4-t.length%K1+K1)%K1,a=new Uint8Array(t.length+n).fill(10);a.set(t);const s=[Pr(1,[0,...bi(a.length,4),...Q3(a),...Array.from(new TextEncoder().encode(e))])],r=a.length-4;for(let o=0;oi.length===3&&i[0]===13,$3=i=>i.length===7||i.some((e,t)=>e===Ph&&i[t+1]===240),Bh=()=>typeof navigator>"u"?void 0:navigator.serial,Br=()=>Bh()!==void 0,K3=(...i)=>`exec(${JSON.stringify(i.join("; "))})`,sr=(i,e=24)=>K3("cyberpi.display.clear()",`cyberpi.display.show_label(${JSON.stringify(i)}, ${e}, 'center')`),Oh=sr("VisuBot",32);class X3{constructor(){y(this,"port");y(this,"writer");y(this,"reader");y(this,"loop");y(this,"rx",[]);y(this,"idx",1);y(this,"frameWaiters",[]);y(this,"waiting",new Map);y(this,"queue",Promise.resolve());y(this,"listeners",new Set);y(this,"error");y(this,"connecting",!1)}listen(e){return this.listeners.add(e),()=>this.listeners.delete(e)}changed(){for(const e of this.listeners)e()}get connected(){return this.writer!==void 0&&!this.connecting}async connect(){const e=Bh();if(!e)throw new Error("Web Serial");const t=await e.requestPort();await t.open({baudRate:115200}),this.port=t,this.writer=t.writable.getWriter(),this.error=void 0,this.connecting=!0,this.changed(),this.loop=this.readLoop(),window.addEventListener("pagehide",()=>void this.disconnect(),{once:!0}),await new Promise(n=>setTimeout(n,3e3)),this.writer&&(this.rx.length=0,this.connecting=!1,this.changed(),await this.run(Oh))}async disconnect(e){if(!this.port)return this.error=e,this.changed();if(!e&&this.writer&&!this.connecting)for(const r of["mbot2.EM_stop('ALL')","cyberpi.led.off()",sr("Bis bald!")])await this.send(r,Dr,2e3).catch(()=>{});const t=this.port,n=this.writer,a=this.reader,s=this.loop;this.port=this.writer=this.reader=this.loop=void 0,this.error=e,this.connecting=!1;for(const r of this.waiting.values())r.reject(new Error(e??"getrennt"));this.waiting.clear();try{await(a==null?void 0:a.cancel()),await s,await(n==null?void 0:n.close())}catch{}try{n==null||n.releaseLock(),await t.close()}catch(r){console.warn("[mBot2] Schließen",r.message)}this.changed()}run(e){return this.send(e,Dr,3e4).then(()=>{})}ask(e){return this.send(e,N3,3e3)}async upload(e,t=()=>{}){if(this.port||await this.connect(),!this.writer)throw new Error(this.error??"nicht verbunden");const n=U3(e),a=6+n.length+3;let s=0;const r=()=>t(++s,a),o=async()=>{await this.sendFrame(s0(V3),Y3),r();for(const l of q3)await this.send(l,Dr,3e3),r()};await o(),await o();for(const l of n)await this.sendFrame(l,$3),r();s=a-3,await o(),await this.restart()}sendFrame(e,t){const n=this.queue.then(async()=>{for(let a=0;a<3;a++){if(!this.writer)throw new Error("nicht verbunden");let s=()=>{};const r=new Promise(u=>s=u),o={match:t,resolve:s};this.frameWaiters.push(o),await this.writer.write(e);const l=await Promise.race([r.then(()=>!0),new Promise(u=>setTimeout(()=>u(!1),3e3))]);if(this.frameWaiters=this.frameWaiters.filter(u=>u!==o),l)return}throw new Error("keine Antwort")});return this.queue=n.catch(()=>{}),n}async restart(){const e=this.port;await this.disconnect("restart"),this.error=void 0,await new Promise(t=>setTimeout(t,300)),await e.open({baudRate:115200}),await new Promise(t=>setTimeout(t,500)),await e.close(),this.changed()}send(e,t,n){const a=this.queue.then(()=>new Promise((s,r)=>{if(!this.writer)return r(new Error("nicht verbunden"));const o=this.idx;this.idx=this.idx%65535+1;const l=setTimeout(()=>{this.waiting.delete(o),r(new Error("keine Antwort"))},n);this.waiting.set(o,{resolve:u=>(clearTimeout(l),s(u)),reject:u=>(clearTimeout(l),r(u))}),this.writer.write(F3(e,t,o)).catch(u=>{this.waiting.delete(o),r(u)})}));return this.queue=a.catch(()=>{}),a}async readLoop(){var e;for(;(e=this.port)!=null&&e.readable;){const t=this.port.readable.getReader();this.reader=t;try{for(;;){const{value:n,done:a}=await t.read();if(a)break;this.rx.push(...n);for(const s of J3(this.rx)){const r=this.frameWaiters.findIndex(u=>u.match(s));r>=0&&this.frameWaiters.splice(r,1)[0].resolve();const o=R3(s);if(!o)continue;const l=this.waiting.get(o.idx);this.waiting.delete(o.idx),l==null||l.resolve(o.value)}}}catch(n){const a=["BufferOverrunError","FramingError","BreakError","ParityError"].includes(n.name);console.warn("[mBot2] Lesefehler",n.name,n.message),!a&&this.port&&this.disconnect(n.message)}finally{t.releaseLock()}if(!this.writer)break}}}const be=new X3,Mh=5,eb=i=>Number.isInteger(i)&&i>=0&&iString(Math.round(i*100)/100),Mo=6.5,h1=Math.PI*Mo,nb={cm:{cm:1,one:"cm",many:"cm"},umdrehungen:{cm:h1,one:"Umdrehung",many:"Umdrehungen"},umdrehung:{cm:h1,one:"Umdrehung",many:"Umdrehungen"},rotations:{cm:h1,one:"rotation",many:"rotations"},rotation:{cm:h1,one:"rotation",many:"rotations"},rotações:{cm:h1,one:"rotação",many:"rotações"},rotação:{cm:h1,one:"rotação",many:"rotações"}},ib=["cm","Umdrehungen","rotations"];function ab(i,e,t){const n=nb[t.trim().toLowerCase()];if(!n)return;const a=e*n.cm,s=Zo(i,[a]);if(n.cm===1)return s;const r=e===1?n.one:n.many;return{...s,label:`${ze(e)} ${r} ${i==="forward"?"vorwärts":"rückwärts"} (${ze(a)} cm)`}}const Pi={forward:{args:1,defaults:[ju],python:([i])=>`mbot2.straight(${ze(i)})`,label:([i])=>`${ze(i)} cm vorwärts`},backward:{args:1,defaults:[ju],python:([i])=>`mbot2.straight(${ze(-i)})`,label:([i])=>`${ze(i)} cm rückwärts`},turnLeft:{args:1,defaults:[90],python:([i])=>`mbot2.turn(${ze(-i)})`,label:([i])=>`${ze(i)}° nach links drehen`},turnRight:{args:1,defaults:[90],python:([i])=>`mbot2.turn(${ze(i)})`,label:([i])=>`${ze(i)}° nach rechts drehen`},stop:{args:0,python:()=>'mbot2.EM_stop("ALL")',label:()=>"anhalten"},drive:{args:2,python:([i,e])=>`mbot2.drive_power(${ze(i)}, ${ze(-e)})`,label:([i,e])=>`Räder links ${ze(i)} %, rechts ${ze(e)} %`},setLed:{args:3,python:([i,e,t])=>`cyberpi.led.on(${ze(i)}, ${ze(e)}, ${ze(t)})`,label:([i,e,t])=>`LEDs (${ze(i)}, ${ze(e)}, ${ze(t)})`},ledOff:{args:0,python:()=>"cyberpi.led.off()",label:()=>"LEDs aus"},ledColor:{args:1,text:!0,choices:Object.keys(ps),valid:([i])=>eb(i),python:([i],e)=>`cyberpi.led.on(${ps[e].join(", ")}, id=${i+1})`,label:([i],e)=>`LED ${i}: ${e}`},playTone:{args:2,python:([i,e])=>`cyberpi.audio.play_tone(${ze(i)}, ${ze(e/1e3)})`,label:([i,e])=>`Ton ${ze(i)} Hz, ${ze(e)} ms`},pause:{args:1,label:([i])=>`${ze(i)} ms warten`},resetTimer:{args:0,python:()=>"cyberpi.timer.reset()",label:()=>"Stoppuhr auf 0"},emotion:{args:0,text:!0,choices:tb,python:(i,e)=>`cyberpi.emotion.${e}()`,label:(i,e)=>`Gefühl: ${e}`},showText:{args:0,text:!0,python:(i,e)=>sr(e),label:(i,e)=>`Bildschirm: ${e}`}},Au={red:{de:"rot",en:"red"},green:{de:"grün",en:"green"},blue:{de:"blau",en:"blue"},yellow:{de:"gelb",en:"yellow"},cyan:{de:"türkis",en:"cyan"},purple:{de:"lila",en:"purple"},white:{de:"weiß",en:"white"},black:{de:"schwarz",en:"black"}};let r0="en";function sb(i){r0=i==="de"?"de":"en"}const rb=()=>r0;function Zh(i){const e=i.trim().toLowerCase(),t=Au[e]??Object.values(Au).find(n=>n.de===e);return t?t[r0]:e}const g1=i=>({python:`cyberpi.controller.is_press('${i}')`,simulated:!1}),Dt={getDistance:{python:"mbuild.ultrasonic2.get(1)",simulated:100},getLine:{python:"mbuild.quad_rgb_sensor.get_line_sta('all', 1)",simulated:0},isLineLeft:{python:"mbuild.quad_rgb_sensor.is_line('L1', 1)",simulated:!1},isLineRight:{python:"mbuild.quad_rgb_sensor.is_line('R1', 1)",simulated:!1},getColor:{python:"mbuild.quad_rgb_sensor.get_color_sta('L1', 1)",simulated:"white"},isButtonA:g1("a"),isButtonB:g1("b"),isJoystickUp:g1("up"),isJoystickDown:g1("down"),isJoystickLeft:g1("left"),isJoystickRight:g1("right"),getBrightness:{python:"cyberpi.get_bri()",simulated:50},getLoudness:{python:"cyberpi.get_loudness('maximum')",simulated:0},getPitch:{python:"cyberpi.get_pitch()",simulated:0},getRoll:{python:"cyberpi.get_roll()",simulated:0},isShaken:{python:"cyberpi.is_shake()",simulated:!1},getBattery:{python:"cyberpi.get_battery()",simulated:100},getTimer:{python:"cyberpi.timer.get()",simulated:0}};function ob(i){const e=new Set;for(const t of i.matchAll(/\bmbot\s*\.\s*([A-Za-z_]\w*)\s*\(\s*\)/gu))t[1]in Dt&&e.add(t[1]);return[...e]}function lb(i){const e=/^mbot\s*\.\s*led\s*\(([^()]*(?:\([^()]*\)[^()]*)*)\)\s*\.\s*setColor\s*\(([\s\S]*)\)\s*;?$/u.exec(i.trim());if(e)return{method:"ledColor",args:[e[1].trim(),e[2].trim()]};const t=/^mbot\s*\.\s*([A-Za-z_]\w*)\s*\(([\s\S]*)\)\s*;?$/u.exec(i.trim());if(!t)return;const n=t[2].trim();return{method:t[1],args:n===""?[]:cb(n)}}function fs(i,e){const t=Pi[i];if(!t)return;const n=e.length===0&&t.defaults?t.defaults:e;if(n.length===t.args)return!t.valid||t.valid(n)?n:void 0}function Zo(i,e,t=""){var a;const n=Pi[i];return{method:i,args:e,python:(a=n.python)==null?void 0:a.call(n,e,t),waitMs:i==="pause"?Math.max(0,e[0]):void 0,label:n.label(e,t),...n.text?{text:t}:{}}}function Lh(i){return i.map(e=>[e.method,...e.args.map(ze),...e.text!==void 0?[JSON.stringify(e.text)]:[]].join(" "))}function ub(i){let e=0;const t=i.trim(),n=()=>{const s=[];for(;;){for(;t[e]===" "||t[e]===",";)e++;if(e>=t.length||t[e]===")")return s;const r=/^(\d+)\s*[x×]\s*\(/u.exec(t.slice(e));if(r){e+=r[0].length;const c=n();if(t[e]!==")")throw new Error(`„)“ fehlt in „${i}“`);e++;for(let d=0;d{if(!(n in Dt))return t;const a=e(n);return typeof a=="string"?JSON.stringify(n==="getColor"?Zh(a):a):String(a)}):i}function cb(i){const e=[];let t=0,n=!1,a=0;for(let s=0;s{const a=t==="turn"?((n+180)%360+360)%360-180:n;if(Math.abs(a)<1e-6)return[];const s=Math.round(Math.abs(a)*100)/100;return t==="drive"?[`${a>0?"forward":"backward"} ${s}`]:[a===-180?"turnRight 180":`${a>0?"turnRight":"turnLeft"} ${s}`]})}function Wh(i){let e=0;const t=i.trim(),n=()=>{const s=[];for(;;){for(;t[e]===" "||t[e]===",";)e++;if(e>=t.length||t[e]===")")return s;const r=/^(\d+)\s*[x×]\s*\(/u.exec(t.slice(e));if(r){e+=r[0].length;const u=n();if(t[e]!==")")throw new Error(`„)“ fehlt in „${i}“`);e++;for(let m=0;ma===i[s%t])){const a=mi(i.slice(0,t));return`${n} x ${t===1?a:`(${a})`}`}}return i.join(", ")}const Eh=["cyberpi","screen","joystick","buttons","leds","lightSensor","microphone","shield","powerSwitch","motors","wheels","ultrasonic","lineSensor","caster","chassis"],db=i=>Eh.includes(i),hb=100;function Nh(i){switch(i.kind){case"finished":return"Simulation finished.";case"infiniteLoopWithoutBody":return"Infinite loop has no body.";case"unsupportedStatement":return`Unsupported statement: ${i.text}`;case"invalidExpression":return`Invalid expression: ${i.text}`;case"unknownVariable":return i.similar?`Unknown variable: ${i.text}. Java is case-sensitive: did you mean ${i.similar}?`:`Unknown variable: ${i.text}`;case"divisionByZero":return"Division by zero.";case"wholeNumberExpected":return"Please enter a whole number.";case"numberExpected":return"Please enter a number.";case"booleanExpected":return"Please enter true or false.";case"subprogramNotFound":return`No open diagram is called ${i.text}. The call was skipped.`;case"callTooDeep":return"Too many nested calls. Does a subprogram call itself?";case"callArguments":return`The call does not match the header of ${i.text}. Check the values in the parentheses.`;case"missingReturn":return`${i.text} ended without returning a value with return.`;case"fileNotFound":return`There is no file called ${i.text}.`;case"endOfFile":return`The file ${i.text} has no more lines.`;case"nullValue":return`${i.text} is null.`;case"other":return i.text}}class Je extends Error{constructor(e){super(Nh(e)),this.notice=e}}const et=i=>new Je({kind:"unsupportedStatement",text:i}),J=i=>new Je({kind:"invalidExpression",text:i}),w1=(i,e)=>{const t=e&&[...e.keys()].find(n=>n!==i&&n.toLowerCase()===i.toLowerCase());return new Je(t?{kind:"unknownVariable",text:i,similar:t}:{kind:"unknownVariable",text:i})},gb=()=>new Je({kind:"divisionByZero"}),xs=new Map;function pb(i,e){xs.set(i,e)}const Fh=()=>[...xs];function Cu(i){return i instanceof Je?i.notice:{kind:"other",text:i instanceof Error?i.message:String(i)}}function fb(i){if(i===0)return"0";if(!Number.isFinite(i))return Number.isNaN(i)?"nan":i>0?"inf":"-inf";const e=Math.floor(Math.log10(Math.abs(Number(i.toPrecision(12)))));if(e<-4||e>=12){const[n,a]=i.toExponential(11).split("e"),s=n.includes(".")?n.replace(/0+$/,"").replace(/\.$/,""):n,r=Number(a);return`${s}e${r<0?"-":"+"}${String(Math.abs(r)).padStart(2,"0")}`}const t=i.toFixed(Math.max(0,11-e));return t.includes(".")?t.replace(/0+$/,"").replace(/\.$/,""):t}function Du(i){return Number.isFinite(i)&&Math.round(i)===i?i.toFixed(1):fb(i)}function _e(i){switch(i.kind){case"int":return String(i.value);case"double":return Du(i.value);case"string":return i.value;case"boolean":return String(i.value);case"intArray":return"["+i.value.map(String).join(", ")+"]";case"doubleArray":return"["+i.value.map(Du).join(", ")+"]";case"stringArray":return"["+i.value.join(", ")+"]";case"booleanArray":return"["+i.value.map(String).join(", ")+"]";case"grid":return"["+bb(i).join(", ")+"]";case"reader":return`${i.className}(${i.file})`;case"writer":return`PrintWriter(${i.file})`;case"null":return"null"}}function bb(i){return i.value.map(e=>"["+e.map(t=>_e(Lo(i.elementType,t))).join(", ")+"]")}function Lo(i,e){switch(i){case"int":return{kind:"int",value:e};case"double":return{kind:"double",value:e};case"string":return{kind:"string",value:e};case"boolean":return{kind:"boolean",value:e}}}function Pu(i){return i==="string"?"":i==="boolean"?!1:0}const vs=new WeakMap;let xb=0;function Bu(i){const e=s=>({int:"I",double:"D",boolean:"Z",string:"Ljava.lang.String;"})[s],t=i.kind==="grid"?"[["+e(i.elementType):i.kind==="intArray"?"[I":i.kind==="doubleArray"?"[D":i.kind==="booleanArray"?"[Z":i.kind==="stringArray"?"[Ljava.lang.String;":void 0;if(!t||!("value"in i))return _e(i);const n=i.value;let a=vs.get(n);return a||(a=(Math.imul(++xb,2654435761)>>>0&2147483647).toString(16),vs.set(n,a)),t+"@"+a}function Ou(i,e){const t=vs.get(i);t&&vs.set(e,t)}function Ya(i){return i.kind==="intArray"||i.kind==="doubleArray"||i.kind==="stringArray"||i.kind==="booleanArray"||i.kind==="grid"}function vb(i){return i.kind==="int"||i.kind==="double"?i.value:NaN}const Tt=i=>({kind:"int",value:i}),_t=i=>({kind:"double",value:i}),o0=i=>i!==void 0&&/\s/u.test(i),ys=i=>new RegExp("\\p{L}","u").test(i),ci=i=>new RegExp("\\p{N}","u").test(i);function xi(i){const e=Array.from(i);return e.length===0||!(ys(e[0])||e[0]==="_")?!1:e.every(t=>ys(t)||ci(t)||t==="_")}function nn(i){switch(i.toLowerCase()){case"int":return"int";case"double":return"double";case"string":return"string";case"char":return"string";case"boolean":case"bool":return"boolean";default:return}}function Mu(i){return i.kind==="int"?"int":i.kind==="double"?"double":i.kind==="boolean"?"boolean":"string"}function ut(i){const e=Array.from(i);if(e.length===3&&e[0]==="'"&&e[2]==="'")return e[1];if(e.length<2||e[0]!=='"'||e[e.length-1]!=='"')return;const t=e.slice(1,-1).join("");if(/^(?:[^"\\]|\\.)*$/u.test(t))return t.replaceAll('\\"','"').replaceAll("\\n",` +`)}function Zu(i){return i.replaceAll("(int)","").replaceAll("(double)","").trim()}function l0(i){const e=new Array(i.length).fill(!1);let t=0,n=!1,a=!1;return i.forEach((s,r)=>{if(n){a?a=!1:s==="\\"?a=!0:s==='"'&&(n=!1);return}switch(s){case'"':n=!0;break;case"(":case"[":t+=1;break;case")":case"]":t-=1;break;default:e[r]=t===0}}),e}function ws(i,e){const t=Array.from(i),n=Array.from(e),a=l0(t),s=[];let r=[],o=0;for(;ot[o+m]===u)&&a.slice(o,l).every(Boolean)){s.push(r.join("").trim()),r=[],o=l;continue}r.push(t[o]),o+=1}return s.push(r.join("").trim()),s}function yb(i){const e=Array.from(i),t=l0(e);for(let n=0;n=","<=","==","!="].includes(o)&&(a=o)}if(a===void 0&&(e[n]==="<"||e[n]===">")&&(a=e[n]),a===void 0)continue;const s=e.slice(0,n).join("").trim(),r=e.slice(n+a.length).join("").trim();return{lhs:s,op:a,rhs:r}}}function rr(i,e){let t=0,n=!1,a=!1;for(let s=e;se.length||!t.every((r,o)=>e[a+o]===r))continue;const s=a+t.length-1;if(rr(e,s)===e.length-1)return{lhs:e.slice(0,a).join("").trim(),rhs:e.slice(s+1,-1).join("").trim()}}}function ma(i){const e=i.trim();for(const t of["if","while","until","switch"]){if(!e.startsWith(t))continue;const n=e.slice(t.length);if(!(n===""||o0(n[0])||n[0]==="("))continue;let a=n.trim();const s=Rh(a);return s!==void 0&&(a=s),a===""?"true":a}return e===""?"true":e}function z1(i){const e=i.trim(),t=e.indexOf("[");if(!e.endsWith("]")||t<0)return;const n=e.slice(0,t).trim();if(!xi(n))return;const a=[];let s=t;for(;s2))return{arrayName:n,indexExpressions:a}}function zb(i){const e=i.trim();if(!e.endsWith(")"))return;const t=/^([A-Za-z_]\w*(?:\s*\[[^\[\]]*\])*|"(?:[^"\\]|\\.)*")\s*\.\s*([A-Za-z_]\w*)\s*\(/u.exec(e);if(!t)return;const n=Array.from(e),a=Array.from(t[0]).length-1;if(rr(n,a)!==n.length-1)return;const s=n.slice(a+1,-1).join("").trim();return{target:t[1],method:t[2],args:s===""?[]:ws(s,",")}}function Lu(i){return xi(i)||z1(i)!==void 0}function Or(i){const e=[];let t="",n=!1,a=!1,s=0;for(const r of i){if(a){t+=r,a=!1;continue}if(r==="\\"){t+=r,a=!0;continue}if(r==='"'){n=!n,t+=r;continue}if(!n&&r==="("&&(s+=1),!n&&r===")"&&(s-=1),r==="+"&&!n&&s===0){e.push(t),t="";continue}t+=r}if(n)throw J(i);return e.push(t),e}function Ib(i){const e=[];let t=0,n="";for(const a of i){if(a==="{"&&(t+=1),a==="}"&&(t-=1),a===","&&t===0){e.push(n),n="";continue}n+=a}return n.trim()!==""&&e.push(n),e}function Wu(i){const e=Array.from(i),t=[];let n=0;for(;n1)throw J(i)}else if(!ci(e[n]))break;n+=1}const o=e.slice(s,n).join("");if(o==="."||!/^[0-9]*\.?[0-9]*$/.test(o))throw J(i);t.push({t:"number",literal:o,value:Number(o)});continue}if(ys(a)||a==="_"){const s=n;for(;n=0&&s=0&&o=0&&s|&&|\|\||^\s*!/u.test(e)}function t1(i){let e=i.trim();for(;e.endsWith(";");)e=e.slice(0,-1).trim();return e}function Nu(i){const e=i.slice(0,3);for(;e.length<3;)e.push("");return e}function Eo(i){const e=i.map(t=>t1(t).trim());return e.length===1&&e[0].includes(";")?Nu(e[0].split(";").map(t=>t.trim())):Nu(e)}const ht=i=>i.frame?{frame:i.frame,callPath:i.callPath}:{};function $t(i,e=[],t={}){const n=[],a=s=>n.push(t.frame?{...s,...t}:s);return i.forEach((s,r)=>{const o=[...e,r],l=s.textLines.join(" ").trim();switch(s.type){case T.anweisung:l!==""&&l!=="ø"&&a({path:o,text:l,kind:"statement"});break;case T.verzweigung:a({path:o,text:l||"true",kind:"branch",cases:s.cases});break;case T.fallauswahl:a({path:o,text:l||"0",kind:"switchSelection",cases:s.cases});break;case T.forSchleife:a({path:o,text:l,kind:"forLoopStart",loopBody:s.loopBody,forParts:Eo(s.textLines)});break;case T.whileSchleife:a({path:o,text:l||"true",kind:"whileLoop",loopBody:s.loopBody});break;case T.doUntilSchleife:a({path:o,text:l||"true",kind:"doUntilLoop",loopBody:s.loopBody});break;case T.endlosschleife:a({path:o,text:l||"true",kind:"infiniteLoop",loopBody:s.loopBody});break;case T.aussprung:a({path:o,text:l,kind:"jump"});break;case T.aufruf:l!==""&&l!=="ø"&&a({path:o,text:l,kind:"call"});break}}),n}function Sb(i,e){const t=i.trim().replaceAll(",",".");switch(e){case"int":if(!/^[+-]?[0-9]+$/.test(t))throw new Je({kind:"wholeNumberExpected"});return Tt(Number(t));case"double":if(!/^[+-]?([0-9]+\.?[0-9]*|\.[0-9]+)([eE][+-]?[0-9]+)?$/.test(t))throw new Je({kind:"numberExpected"});return _t(Number(t));case"string":return{kind:"string",value:i};case"boolean":switch(t.toLowerCase()){case"true":case"wahr":return{kind:"boolean",value:!0};case"false":case"falsch":return{kind:"boolean",value:!1};default:throw new Je({kind:"booleanExpected"})}}}function Fu(){return{stepIndex:0,variables:new Map,outputLines:[],isHalted:!1,files:new Map,robotActions:[]}}function Tb(i,e){for(let t=0;tt===e.path[n])}function St(i){const e=/^(void|int|double|String|boolean)\s+([A-Za-z_]\w*)\s*\((.*)\)$/u.exec(t1(i));if(!e)return;const t=[];if(e[3].trim()!=="")for(const n of e[3].split(",")){const a=/^(int|double|String|boolean|char)\s*((?:\[\s*\]){0,2})\s+([A-Za-z_]\w*)$/u.exec(n.trim());if(!a)return;const s=(a[2].match(/\[/gu)??[]).length;t.push({type:nn(a[1]),name:a[3],...s>0?{dims:s}:{}})}return{returnType:nn(e[1]),name:e[2],params:t}}function Jh(i){const e=/^(?:(?:(int|double|String|boolean)\s+)?([A-Za-z_]\w*)\s*=\s*)?([A-Za-z_]\w*)\s*\((.*)\)$/u.exec(t1(i));if(e)return{targetType:e[1]?nn(e[1]):void 0,target:e[2],name:e[3],args:e[4].trim()===""?[]:ws(e[4],",")}}function zs(i){var t,n;const e=t1(i);return((t=St(e))==null?void 0:t.name)??((n=Jh(e))==null?void 0:n.name)??e.replace(/\(\s*\)$/u,"").trim()}class Bi{constructor(e,t=()=>{}){y(this,"steps");y(this,"state",Fu());y(this,"nextFrame",1);y(this,"callDepth",0);y(this,"frames",new Map);y(this,"peeking",!1);y(this,"robotSensors",{});y(this,"pseudocode");y(this,"decided");y(this,"afterOutput",!1);this.resolveSubprogram=t,this.steps=$t(e.elements),this.pseudocode=!!e.pseudocode}get currentStepPath(){const e=this.steps[this.state.stepIndex];return(e==null?void 0:e.callPath)??(e==null?void 0:e.path)}get canStep(){return!this.state.isHalted&&!this.state.inputRequest&&this.state.stepIndex ${_e(n)}`}catch(n){this.state.inputErrorNotice=Cu(n);return}this.state.inputRequest=void 0,this.state.inputErrorNotice=void 0,this.state.stepIndex+=1,this.state.notice=this.finishedIfAtEnd()}}provideDecision(e){var s;if(((s=this.state.inputRequest)==null?void 0:s.valueType)==="string")return this.state.inputRequest=void 0,this.decided=e.trim(),this.step();const t=e.trim().toLowerCase(),n=["true","wahr","ja","yes","sim","verdadeiro"].includes(t),a=["false","falsch","nein","no","não","nao","falso"].includes(t);if(!n&&!a){this.state.inputErrorNotice={kind:"booleanExpected"};return}this.state.inputRequest=void 0,this.state.inputErrorNotice=void 0,this.decided=n,this.step()}condition(e){if(!this.pseudocode)return this.evaluateBool(e);const t=this.decided;if(typeof t=="boolean")return this.decided=void 0,t;this.state.inputRequest={variableName:"",valueType:"boolean",prompt:`${e} (true/false)`,decision:!0},this.state.inputErrorNotice=void 0,this.state.notice=void 0}finishedIfAtEnd(){return this.state.stepIndex>=this.steps.length?{kind:"finished"}:void 0}splice(e){this.steps.splice(this.state.stepIndex,1,...e)}noticeAfterEntering(e){return e.length>0?void 0:this.finishedIfAtEnd()}executeBranch(e){const t=e.cases;if(!t||t.length<2)throw et(e.text);const n=ma(e.text),a=this.condition(n);if(a===void 0)return;const s=a?0:1,r=$t(t[s].elements,[...e.path,s],ht(e));this.splice(r),this.state.lastTrace=`${n} -> ${a}`,this.state.notice=this.noticeAfterEntering(r)}executeSwitchSelection(e){const t=e.cases;if(!t||t.length===0)throw et(e.text);const n=ma(e.text);let a;if(this.pseudocode){const r=this.decided;if(typeof r!="string"){const l=t.map(u=>u.name).join(" / ");this.state.inputRequest={variableName:"",valueType:"string",prompt:`${n} (${l})`,decision:!0},this.state.notice=void 0;return}this.decided=void 0;const o=t.findIndex(l=>l.name.trim().toLowerCase()===r.toLowerCase());a=o>=0?o:t.length-1}else a=Tb(this.evaluateSwitchSelector(n),t)??t.length-1;const s=$t(t[a].elements,[...e.path,a],ht(e));this.splice(s),this.state.lastTrace=`${n} -> ${t[a].name}`,this.state.notice=this.noticeAfterEntering(s)}executeForLoopStart(e){if(this.pseudocode)return this.splice([{...e,kind:"whileLoop"}]);const t=Eo(e.forParts??[e.text]);t[0]!==""&&this.executeStatement(t[0]),this.splice([{...ht(e),path:e.path,text:t[1],kind:"forLoopCondition",loopBody:e.loopBody,forParts:t}])}executeForLoopCondition(e){const t=Eo(e.forParts??[e.text]),n=t[1]===""?"true":t[1],a=this.condition(n);if(a!==void 0)if(this.state.lastTrace=`${n} -> ${a}`,a){const s=$t(e.loopBody??[],[...e.path,0],ht(e));this.splice([...s,{...ht(e),path:e.path,text:t[2],kind:"forLoopIncrement",loopBody:e.loopBody,forParts:t},{...ht(e),path:e.path,text:t[1],kind:"forLoopCondition",loopBody:e.loopBody,forParts:t}])}else this.splice([]),this.state.notice=this.finishedIfAtEnd()}executeForLoopIncrement(e){const t=e.text.trim();t!==""&&this.executeIncrement(t),this.splice([])}executeWhileLoop(e){const t=ma(e.text),n=this.condition(t);if(n!==void 0)if(this.state.lastTrace=`${t} -> ${n}`,n){const a=$t(e.loopBody??[],[...e.path,0],ht(e));this.splice([...a,{...ht(e),path:e.path,text:e.text,kind:"whileLoop",loopBody:e.loopBody}]),this.state.notice=this.noticeAfterEntering(a)}else this.splice([]),this.state.notice=this.finishedIfAtEnd()}enterDoUntilLoop(e){const t=$t(e.loopBody??[],[...e.path,0],ht(e));this.splice([...t,{...ht(e),path:e.path,text:e.text,kind:"doUntilCondition",loopBody:e.loopBody}]),this.state.notice=this.noticeAfterEntering(t)}executeDoUntilCondition(e){const t=ma(e.text),n=this.condition(t);if(n!==void 0)if(this.state.lastTrace=`${t} -> ${n}`,n){const a=$t(e.loopBody??[],[...e.path,0],ht(e));this.splice([...a,{...ht(e),path:e.path,text:e.text,kind:"doUntilCondition",loopBody:e.loopBody}])}else this.splice([]),this.state.notice=this.finishedIfAtEnd()}enterInfiniteLoop(e){const t=$t(e.loopBody??[],[...e.path,0],ht(e));this.splice([...t,{...ht(e),path:e.path,text:e.text,kind:"infiniteLoop",loopBody:e.loopBody}]),this.state.lastTrace="true -> true",this.state.notice=t.length>0?void 0:{kind:"infiniteLoopWithoutBody"}}executeJump(e){const t=e.frame??0,n=o=>o.lengthl===e.path[u]);let a=this.steps.length,s="end";for(let o=this.state.stepIndex+1;o ${s}`,s==="return"&&this.finishFrame(r),this.state.notice=this.finishedIfAtEnd()}executeCall(e){const t=e.text,n=this.resolveSubprogram(zs(t));if(!n){this.splice([]),this.state.lastTrace=`${t} -> ?`,this.state.notice={kind:"subprogramNotFound",text:t},this.state.stepIndex>=this.steps.length&&(this.state.notice={kind:"finished"});return}const a=Jh(t),s=St(n.caption);if(s?((a==null?void 0:a.args.length)??0)!==s.params.length||(a==null?void 0:a.target)!==void 0&&!s.returnType:a!==void 0&&(a.args.length>0||a.target!==void 0))throw new Je({kind:"callArguments",text:(s==null?void 0:s.name)??zs(t)});if(this.callDepth>=hb)throw new Je({kind:"callTooDeep"});const o=new Map,l=[];s==null||s.params.forEach((d,h)=>{const g=a.args[h].trim();if(!d.dims){o.set(d.name,this.evaluateExpression(g,d.type));return}const f=this.state.variables.get(g);if(!f)throw/^[A-Za-z_]\w*$/u.test(g)?w1(g,this.state.variables):J(g);if(!(d.dims===1?f.kind===`${d.type}Array`:f.kind==="grid"&&f.elementType===d.type))throw J(g);o.set(d.name,f),l.push({param:d.name,callerName:g})}),this.callDepth+=1;const u={frame:this.nextFrame++,callPath:e.callPath??e.path};s&&(this.frames.set(u.frame,{saved:this.state.variables,header:s,call:a,references:l}),this.state.variables=o);const m=$t(n.elements,[],u);this.splice([...m,{...u,path:e.path,text:t,kind:"callEnd"}]);const c=s==null?void 0:s.params.map((d,h)=>`${d.name} = ${d.dims?a.args[h].trim():_e(o.get(d.name))}`).join(", ");this.state.lastTrace=c?`${t} -> ${c}`:`${t} -> call`}executeCallEnd(e){this.callDepth-=1,this.splice([]),this.state.lastTrace=`${e.text} -> return`,this.finishFrame(e),this.state.notice=this.finishedIfAtEnd()}executeReturn(e){const t=e.frame??0,n=t1(e.text).slice(6).trim(),a=this.frames.get(t);if(a&&n!==""){if(!a.header.returnType)throw J(e.text);a.returnValue=this.evaluateExpression(n,a.header.returnType)}const s=a!=null&&a.returnValue?`${e.text} -> ${_e(a.returnValue)}`:`${e.text} -> return`;if(t===0){this.steps.splice(this.state.stepIndex),this.state.lastTrace=s,this.state.notice={kind:"finished"};return}let r=this.state.stepIndex+1;for(;r0?new Map(t.saved):t.saved;for(const m of t.references){const c=this.state.variables.get(m.param);c&&n.set(m.callerName,c)}this.state.variables=n;const a=t.returnValue;if(t.header.returnType&&!a)throw new Je({kind:"missingReturn",text:t.header.name});const s=(l=t.call)==null?void 0:l.target;if(!s||!a)return;let r=(u=t.call)==null?void 0:u.targetType;if(!r)try{r=this.inferTargetValueType(s)}catch{r=t.header.returnType}const o=r==="double"&&a.kind==="int"?_t(a.value):r==="string"?{kind:"string",value:_e(a)}:a;if(Mu(o)!==r)throw J(e.text);this.assignValue(o,s),this.state.lastTrace=`${s} = ${e.text.slice(e.text.indexOf("=")+1).trim()} -> ${_e(o)}`}executeStatement(e){const t=this.state,n=e.trim(),a=n.toLowerCase(),s=this.afterOutput;if(this.afterOutput=!1,a.startsWith("input:")){t.inputRequest=this.parseInputRequest(n,s),t.outputLineOpen=!1,t.inputErrorNotice=void 0;return}const r=/^System\s*\.\s*out\s*\.\s*(println|print)\s*\(([\s\S]*)\)\s*;?$/u.exec(n);if(a.startsWith("output:")||a.startsWith("print:")||r){const v=r?r[2]:n.slice(a.startsWith("output:")?7:6),w=this.peek(()=>this.renderOutputExpression(v)),z=v.trim()===""?"":this.evaluateOutputExpression(v),I=(r==null?void 0:r[1])==="print",S=I&&z.endsWith(` +`),[k,...D]=(S?z.slice(0,-1):z).split(` +`);t.outputLineOpen&&t.outputLines.length?t.outputLines[t.outputLines.length-1]+=k:t.outputLines.push(k),t.outputLines.push(...D),t.outputLineOpen=I&&!S,this.afterOutput=!0,t.lastTrace=`${w} -> ${z}`;return}const o=lb(n);if(o){this.executeMBotCommand(o.method,o.args,n);return}if(this.executeFileStatement(n))return;if(n.endsWith("++")||n.endsWith("--")||n.includes("+=")||n.includes("-=")){this.executeIncrement(n);return}const l=/^(?:final\s+)?([A-Za-z]+)\s+([A-Za-z_]\w*(?:\s*,\s*[A-Za-z_]\w*)*)$/u.exec(t1(n).trim()),u=l?nn(l[1]):void 0;if(l&&u){const v=l[2].split(",").map(w=>w.trim());for(const w of v)t.variables.set(w,Lo(u,Pu(u)));t.lastTrace=v.map(w=>`${w} = ${_e(t.variables.get(w))}`).join(", ");return}const m=n.indexOf("=");if(m<0)throw et(n);const c=n.slice(0,m).trim(),d=n.slice(m+1),h=this.parseArrayDeclaration(c,d);if(h){t.variables.set(h.name,h.value),t.lastTrace=`${h.name} = new ${h.typeName}[${h.count}]`;return}const g=this.parseAssignmentTarget(c);let f;try{f=this.peek(()=>this.renderNumericExpression(d))}catch{f=d.trim()}let b=g.valueType;if(!b)try{b=this.inferTargetValueType(g.variableName)}catch{b="int"}const x=this.evaluateExpression(d,b);this.assignValue(x,g.variableName),t.lastTrace=`${g.variableName} = ${f} -> ${_e(x)}`}executeMBotCommand(e,t,n){var r;if((r=Pi[e])!=null&&r.text){const o=Pi[e];if(t.length!==o.args+1)throw J(n);const l=fs(e,t.slice(0,-1).map(c=>this.evaluateDouble(c)));if(!l)throw J(n);const u=Zo(e,l,this.evaluateOutputExpression(t[t.length-1])),m=o.choices;if(m&&!m.includes(u.text??""))throw J(`${n} (${m.join(", ")})`);this.state.robotActions.push(u),this.state.lastTrace=`${n} -> ${u.label}`;return}if((e==="forward"||e==="backward")&&t.length===2){const o=this.evaluateOutputExpression(t[1]),l=ab(e,this.evaluateDouble(t[0]),o);if(!l)throw J(`${n} (${ib.map(u=>`"${u}"`).join(", ")})`);this.state.robotActions.push(l),this.state.lastTrace=`${n} -> ${l.label}`;return}const a=fs(e,t.map(o=>this.evaluateDouble(o)));if(!a)throw J(n);const s=Zo(e,a);this.state.robotActions.push(s),this.state.lastTrace=`${n} -> ${s.label}`}executeFileStatement(e){const t=this.state,n=t1(e).trim(),a=/^(?:(Scanner|BufferedReader|PrintWriter)\s+)?([A-Za-z_]\w*)\s*=\s*new\s+(Scanner|BufferedReader|PrintWriter)\s*\(([\s\S]*)\)$/u.exec(n);if(a){const[,m,c,d,h]=a;if(m&&m!==d)throw J(n);const g=d==="Scanner"?/^new\s+File\s*\(([\s\S]+)\)$/u.exec(h.trim()):d==="BufferedReader"?/^new\s+FileReader\s*\(([\s\S]+)\)$/u.exec(h.trim()):/^(?:new\s+(?:File|FileWriter)\s*\(([\s\S]+)\)|([\s\S]+))$/u.exec(h.trim());if(!g)throw et(n);const f=this.fileNameValue(g[1]??g[2]);if(d==="PrintWriter")t.variables.set(c,{kind:"writer",file:f,text:""});else{const x=this.fileContent(f).split(/\r?\n/u);x[x.length-1]===""&&x.pop(),t.variables.set(c,{kind:"reader",className:d,file:f,lines:x,next:0})}return t.lastTrace=`${c} = new ${d}(${f})`,!0}const s=/^Files\s*\.\s*writeString\s*\(\s*(?:Path\s*\.\s*of|Paths\s*\.\s*get)\s*\(([^()]+)\)\s*,([\s\S]+)\)$/u.exec(n);if(s){const m=this.fileNameValue(s[1]),c=this.evaluateOutputExpression(s[2]);return t.files.set(m,c),t.lastTrace=`${m} ← ${JSON.stringify(c)}`,!0}const r=/^([A-Za-z_]\w*)\s*\.\s*(println|print|close)\s*\(([\s\S]*)\)$/u.exec(n),o=r&&t.variables.get(r[1]);if(!r||!o)return!1;if(o.kind==="null")throw new Je({kind:"nullValue",text:r[1]});if(o.kind==="reader"&&r[2]==="close")return t.lastTrace=`${r[1]}.close()`,!0;if(o.kind!=="writer")return!1;if(r[2]==="close")return t.files.set(o.file,o.text),t.lastTrace=`${o.file} ← ${JSON.stringify(o.text)}`,!0;const l=r[3].trim()===""?"":this.evaluateOutputExpression(r[3]),u=r[2]==="println"?l+` +`:l;return t.variables.set(r[1],{...o,text:o.text+u}),t.lastTrace=`${r[1]}.${r[2]}(${JSON.stringify(l)})`,!0}fileNameValue(e){const t=e.trim(),n=ut(t);if(n!==void 0)return n;const a=this.evaluateReference(t);if((a==null?void 0:a.kind)==="string")return a.value;throw J(t)}fileContent(e){const t=this.state.files.get(e)??xs.get(e);if(t===void 0)throw new Je({kind:"fileNotFound",text:e});return t}readerMethod(e,t,n,a){if(n.args.length)throw J(a);const s=t.next0?"+":"-";if(r.kind==="int"){t.set(s,Tt(r.value+a)),this.state.lastTrace=`${s} = ${r.value} ${o} 1 -> ${r.value+a}`;return}if(r.kind==="double"){const l=r.value+a;t.set(s,_t(l)),this.state.lastTrace=`${s} = ${_e(r)} ${o} 1 -> ${_e(_t(l))}`;return}throw et(e)}for(const[n,a]of[["+=",1],["-=",-1]]){const s=e.indexOf(n);if(s<0)continue;const r=e.slice(0,s).trim(),o=e.slice(s+2),l=t.get(r);if(!xi(r)||!l)throw et(e);const u=a>0?"+":"-";if(l.kind==="int"){const m=this.evaluateInt(o),c=l.value+a*m;t.set(r,Tt(c)),this.state.lastTrace=`${r} = ${l.value} ${u} ${m} -> ${c}`;return}if(l.kind==="double"){const m=this.evaluateDouble(o),c=l.value+a*m;t.set(r,_t(c)),this.state.lastTrace=`${r} = ${_e(l)} ${u} ${_e(_t(m))} -> ${_e(_t(c))}`;return}throw et(e)}this.executeStatement(e)}parseAssignmentTarget(e){if(z1(e))return{variableName:e.trim()};const t=e.split(/\s+/u).filter(Boolean);let n,a;if(t.length===1)n=t[0];else if(t.length===2&&nn(t[0]))n=t[1],a=nn(t[0]);else if(t.length===3&&t[0]==="const"&&nn(t[1]))n=t[2],a=nn(t[1]);else throw et(e);if(!Lu(n))throw et(e);return{variableName:n,valueType:a}}parseInputRequest(e,t=!1){const n=e.slice(6).trim(),a=/^(\S+)(?:\s+(\S+))?(?:\s+([\s\S]*))?$/u.exec(n);if(!a)throw et(e);const s=[a[1],a[2],a[3]].filter(c=>c!==void 0);let r,o,l;const u=nn(s[0]);if(s.length>=2&&u?(r=s[1],o=u,l=(s[2]??"").trim()):(r=s[0],o=this.inferTargetValueType(r),l=(s[1]??"").trim()),!Lu(r))throw et(e);const m=ut(l)??l;return m===""&&t?this.state.outputLineOpen?{variableName:r,valueType:o,prompt:"",continuesLine:!0}:{variableName:r,valueType:o,prompt:""}:{variableName:r,valueType:o,prompt:m===""?`${r}:`:m}}parseArrayDeclaration(e,t){const n=e.split(/\s+/u).filter(Boolean);if(n.length!==2||!n[0].endsWith("[]"))return;const a=n[0].endsWith("[][]"),s=n[0].slice(0,a?-4:-2),r=nn(s),o=n[1];if(!r||!xi(o))throw et(e);if(a)return this.parseGridDeclaration(o,s,r,t);const l=t.trim();if(l.startsWith("{")&&l.endsWith("}")){const h=l.slice(1,-1).split(",").map(f=>f.trim());let g;switch(r){case"int":g={kind:"intArray",value:h.map(f=>this.evaluateInt(f))};break;case"double":g={kind:"doubleArray",value:h.map(f=>this.evaluateDouble(f))};break;case"string":g={kind:"stringArray",value:h.map(f=>ut(f)??this.evaluateOutputExpression(f))};break;case"boolean":g={kind:"booleanArray",value:h.map(f=>this.evaluateBool(f))};break}return{name:o,typeName:s,count:h.length,value:g}}const u=`new ${s}[`;if(!l.startsWith(u)){const h=this.evaluateStringMethod(l);if((h==null?void 0:h.kind)==="stringArray"&&r==="string")return{name:o,typeName:s,count:h.value.length,value:h}}if(!l.startsWith(u)||!l.endsWith("]"))throw et(t);const m=l.slice(u.length,-1),c=this.evaluateInt(m);if(c<0)throw J(m);const d=r==="int"?{kind:"intArray",value:new Array(c).fill(0)}:r==="double"?{kind:"doubleArray",value:new Array(c).fill(0)}:r==="boolean"?{kind:"booleanArray",value:new Array(c).fill(!1)}:{kind:"stringArray",value:new Array(c).fill("")};return{name:o,typeName:s,count:c,value:d}}parseGridDeclaration(e,t,n,a){var c;const s=a.trim(),r=d=>{switch(n){case"int":return this.evaluateInt(d);case"double":return this.evaluateDouble(d);case"boolean":return this.evaluateBool(d);case"string":return ut(d.trim())??this.evaluateOutputExpression(d)}};if(s.startsWith("{")&&s.endsWith("}")){const d=Ib(s.slice(1,-1)).map(h=>{const g=h.trim();if(!g.startsWith("{")||!g.endsWith("}"))throw J(g);return g.slice(1,-1).trim()===""?[]:g.slice(1,-1).split(",").map(f=>r(f.trim()))});return{name:e,typeName:t,count:`${d.length}][${((c=d[0])==null?void 0:c.length)??0}`,value:{kind:"grid",elementType:n,value:d}}}const o=new RegExp(String.raw`^new\s+${t}\s*\[(.+)\]\s*\[(.+)\]$`,"u").exec(s);if(!o)throw et(a);const l=this.evaluateInt(o[1]),u=this.evaluateInt(o[2]);if(l<0)throw J(o[1]);if(u<0)throw J(o[2]);const m={kind:"grid",elementType:n,value:Array.from({length:l},()=>new Array(u).fill(Pu(n)))};return{name:e,typeName:t,count:`${l}][${u}`,value:m}}arrayIndex(e){const t=this.evaluateInt(e);if(t<0)throw J(e);return t}evaluateReference(e){const t=e.trim(),n=this.state.variables.get(t);if(n)return n;const a=this.evaluateStringMethod(t);if(a)return a;const s=/^\(\s*char\s*\)\s*(.+)$/su.exec(t);if(s){const o=this.evaluateInt(s[1]);if(!(o>=0&&o<=1114111))throw J(t);return{kind:"string",value:String.fromCodePoint(o)}}const r=z1(t);if(r)return this.valueInArray(r.arrayName,r.indexExpressions.map(o=>this.arrayIndex(o)))}evaluateStringMethod(e){const t=zb(e);if(!t)return;const n=this.evaluateStaticCall(e,t);if(n)return n;const a=this.state.variables.get(t.target.trim());if((a==null?void 0:a.kind)==="reader")return this.readerMethod(t.target.trim(),a,t,e);if((a==null?void 0:a.kind)==="null")throw new Je({kind:"nullValue",text:t.target.trim()});const s=ut(t.target)??this.stringValueOf(t.target);if(s===void 0)return;const r=t.args,o=d=>{const h=r[d];if(h===void 0)throw J(e);const g=ut(h.trim());if(g!==void 0)return g;const f=this.evaluateReference(h);if((f==null?void 0:f.kind)==="string")return f.value;throw J(h)},l=d=>{if(r[d]===void 0)throw J(e);return this.evaluateInt(r[d])},u=d=>{if(r.length!==d)throw J(e)},m=Array.from(s),c=(d,h)=>{if(d<0||d>h)throw J(e);return d};switch(t.method){case"length":return u(0),Tt(m.length);case"charAt":return u(1),{kind:"string",value:m[c(l(0),m.length-1)]};case"substring":{if(r.length!==1&&r.length!==2)throw J(e);const d=c(l(0),m.length),h=r.length===2?c(l(1),m.length):m.length;if(h0&&h[h.length-1]==="";)h.pop();return{kind:"stringArray",value:h}}default:return}}evaluateStaticCall(e,t){const n=()=>{if(t.args.length!==1)throw J(e);return t.args[0]},a=s=>{const r=ut(s.trim());if(r!==void 0)return r;const o=this.evaluateReference(s);if((o==null?void 0:o.kind)==="string")return o.value;throw J(s)};switch(`${t.target}.${t.method}`){case"Integer.parseInt":{const s=a(n()).trim();if(!/^[+-]?\d+$/u.test(s))throw new Je({kind:"wholeNumberExpected"});return Tt(Number(s))}case"Double.parseDouble":{const s=Number(a(n()).trim());if(!Number.isFinite(s))throw new Je({kind:"numberExpected"});return _t(s)}case"String.valueOf":return{kind:"string",value:this.evaluateOutputExpression(n())};case"Arrays.toString":case"Arrays.deepToString":{const s=this.state.variables.get(n().trim());if(!s||!Ya(s))throw J(e);return s.kind==="grid"&&t.method==="toString"?{kind:"string",value:"["+s.value.map(o=>Bu({kind:`${s.elementType}Array`,value:o})).join(", ")+"]"}:{kind:"string",value:_e(s)}}case"Files.readString":{const s=/^(?:Path\s*\.\s*of|Paths\s*\.\s*get)\s*\(\s*("(?:[^"\\]|\\.)*")\s*\)$/u.exec(n().trim());if(!s)throw J(e);const r=ut(s[1]),o=xs.get(r);if(o===void 0)throw new Je({kind:"fileNotFound",text:r});return{kind:"string",value:o}}default:return}}stringValueOf(e){const t=e.trim(),n=this.state.variables.get(t);if(n)return n.kind==="string"?n.value:void 0;const a=z1(t);if(!a)return;const s=this.valueInArray(a.arrayName,a.indexExpressions.map(r=>this.arrayIndex(r)));return s.kind==="string"?s.value:void 0}substituteStringCalls(e){if(!e.includes("("))return e;let t="",n=e;const a=/([A-Za-z_]\w*(?:\[[^\[\]]*\])*|"(?:[^"\\]|\\.)*")\s*\.\s*(length|indexOf|lastIndexOf|compareTo|charAt|parseInt|parseDouble)\s*\(/u;for(let s=a.exec(n);s;s=a.exec(n)){const r=s.index+s[0].length-1,o=rr(Array.from(n),Array.from(n.slice(0,r)).length);if(o===void 0)break;const l=Array.from(n),u=l.slice(Array.from(n.slice(0,s.index)).length,o+1).join(""),m=this.evaluateStringMethod(u),c=l.slice(0,Array.from(n.slice(0,s.index)).length).join(""),d=(m==null?void 0:m.kind)==="string"?Wo(m.value):void 0;(m==null?void 0:m.kind)==="int"?t+=c+String(m.value):(m==null?void 0:m.kind)==="double"?t+=c+(Number.isInteger(m.value)?m.value.toFixed(1):String(m.value)):d!==void 0?t+=c+String(d):t+=c+u,n=l.slice(o+1).join("")}return t+n}valueInArray(e,t){const n=this.state.variables.get(e);if(!n)throw w1(e,this.state.variables);const a=`${e}[${t.join("][")}]`;if(n.kind==="grid"){if(t.length!==2)throw J(a);const r=n.value[t[0]];if(!r||t[1]>=r.length)throw J(a);return Lo(n.elementType,r[t[1]])}if(t.length!==1)throw J(a);const s=t[0];if(!Ya(n))throw J(e);if(s>=n.value.length)throw J(a);switch(n.kind){case"intArray":return Tt(n.value[s]);case"doubleArray":return _t(n.value[s]);case"stringArray":return{kind:"string",value:n.value[s]};case"booleanArray":return{kind:"boolean",value:n.value[s]};default:throw J(e)}}inferTargetValueType(e){const t=e.trim(),n=this.state.variables.get(t);if(n)return Mu(n);const a=z1(t);if(a){const s=this.state.variables.get(a.arrayName);if(!s)throw w1(a.arrayName,this.state.variables);if(s.kind==="intArray")return"int";if(s.kind==="doubleArray")return"double";if(s.kind==="stringArray")return"string";if(s.kind==="booleanArray")return"boolean";if(s.kind==="grid")return s.elementType;throw J(a.arrayName)}throw et(e)}assignValue(e,t){const n=t.trim(),a=z1(n);if(!a){this.state.variables.set(n,e);return}const s=a.indexExpressions.map(u=>this.arrayIndex(u)),r=this.state.variables.get(a.arrayName);if(!r)throw w1(a.arrayName,this.state.variables);if(r.kind==="grid"){if(s.length!==2||s[0]>=r.value.length||s[1]>=r.value[s[0]].length)throw J(n);const u=r.elementType==="double"&&e.kind==="int"||e.kind===r.elementType?e.value:void 0;if(u===void 0||Ya(e))throw J(n);const m=r.value.map(c=>[...c]);m[s[0]][s[1]]=u,Ou(r.value,m),this.state.variables.set(a.arrayName,{...r,value:m});return}if(s.length!==1)throw J(n);const o=s[0];let l;if(r.kind==="intArray"&&e.kind==="int")l={kind:"intArray",value:[...r.value]};else if(r.kind==="doubleArray"&&(e.kind==="double"||e.kind==="int"))l={kind:"doubleArray",value:[...r.value]};else if(r.kind==="stringArray"&&e.kind==="string")l={kind:"stringArray",value:[...r.value]};else if(r.kind==="booleanArray"&&e.kind==="boolean")l={kind:"booleanArray",value:[...r.value]};else throw J(n);if(o>=l.value.length)throw J(n);l.value[o]=e.value,Ou(r.value,l.value),this.state.variables.set(a.arrayName,l)}evaluateOutputExpression(e){const t=this.withSensors(e).trim();if(Eu(t)&&Or(t).every(s=>ut(s.trim())===void 0)&&!this.evaluateReference(t))return String(this.evaluateBool(t));let n,a;for(const s of Or(this.withSensors(e))){const r=s.trim(),o=ut(r),l=o!==void 0?{kind:"string",value:o}:this.evaluateReference(r)??(Eu(r)?{kind:"boolean",value:this.evaluateBool(r)}:this.evaluateNumeric(r)),u=l.kind==="int"||l.kind==="double";if(a===void 0&&u){n?n=n.kind==="int"&&l.kind==="int"?Tt(n.value+l.value):_t(n.value+l.value):n=l;continue}a=(a??(n?_e(n):""))+Bu(l),n=void 0}return a??(n?_e(n):"")}renderOutputExpression(e){return Or(e).map(t=>{const n=t.trim();if(ut(n)!==void 0)return n;const a=this.evaluateReference(n);if(a)return _e(a);try{return this.renderNumericExpression(n)}catch{return n}}).join(" + ")}evaluateExpression(e,t){switch(t){case"int":return Tt(this.evaluateInt(e));case"double":return _t(this.evaluateDouble(e));case"string":{const n=e.trim(),a=ut(n);if(a!==void 0)return{kind:"string",value:a};if(n==="null")return{kind:"null"};const s=this.evaluateReference(n);return(s==null?void 0:s.kind)==="null"?s:s?{kind:"string",value:_e(s)}:{kind:"string",value:this.evaluateOutputExpression(e)}}case"boolean":return{kind:"boolean",value:this.evaluateBool(e)}}}evaluateNumeric(e){const{v:t,int:n}=this.parser(e).parseNumber();return n||Number.isFinite(t)&&Math.round(t)===t?Tt(t):_t(t)}parser(e){const t=this.withSensors(e);return new kb(Wu(Zu(this.substituteStringCalls(t))),this.state.variables)}withSensors(e){return mb(e,t=>this.robotSensors[t]??Dt[t].simulated)}evaluateInt(e){return this.parser(e).parseInt()}evaluateDouble(e){return this.parser(e).parseDouble()}evaluateBool(e){const t=this.withSensors(e).trim();if(t==="true")return!0;if(t==="false")return!1;const n=this.evaluateReference(t);if((n==null?void 0:n.kind)==="boolean")return n.value;const a=ws(t,"||");if(a.length>1)return a.some(u=>this.evaluateBool(u));const s=ws(t,"&&");if(s.length>1)return s.every(u=>this.evaluateBool(u));if(t.startsWith("!")&&!t.startsWith("!="))return!this.evaluateBool(t.slice(1));const r=Rh(t);if(r!==void 0)return this.evaluateBool(r);const o=wb(t);if(o)return this.evaluateComparison(o.lhs,"==",o.rhs);const l=yb(t);if(l)return this.evaluateComparison(l.lhs,l.op,l.rhs);if(this.stringOperand(t)!==void 0)throw J(t);return this.evaluateDouble(t)!==0}evaluateComparison(e,t,n){if((e.trim()==="null"||n.trim()==="null")&&(t==="=="||t==="!=")){const m=d=>{var h;return d.trim()==="null"||((h=this.evaluateReference(d))==null?void 0:h.kind)==="null"},c=m(e)===m(n);return t==="=="?c:!c}const a=this.booleanOperand(e),s=this.booleanOperand(n);if((a!==void 0||s!==void 0)&&(t==="=="||t==="!=")){const m=a??this.evaluateBool(e),c=s??this.evaluateBool(n);return t==="=="?m===c:m!==c}const r=this.stringOperand(e),o=this.stringOperand(n);let l,u;if(r!==void 0||o!==void 0){if(r===void 0||o===void 0)throw J(`${e} ${t} ${n}`);l=r,u=o}else l=this.evaluateDouble(e),u=this.evaluateDouble(n);switch(t){case"==":return l===u;case"!=":return l!==u;case"<":return l":return l>u;case">=":return l>=u;default:throw J(`${e} ${t} ${n}`)}}booleanOperand(e){const t=e.trim();if(t==="true")return!0;if(t==="false")return!1;const n=this.evaluateReference(t);return(n==null?void 0:n.kind)==="boolean"?n.value:void 0}stringOperand(e){const t=e.trim(),n=ut(t);if(n!==void 0)return n;const a=this.evaluateReference(t);return(a==null?void 0:a.kind)==="string"?a.value:void 0}evaluateSwitchSelector(e){const t=this.withSensors(e).trim(),n=ut(t);if(n!==void 0)return{kind:"text",value:n};const a=this.state.variables.get(t);if(a)switch(a.kind){case"int":return{kind:"int",value:a.value};case"double":return{kind:"int",value:Math.trunc(a.value)};case"string":return{kind:"text",value:a.value};default:throw J(t)}return/^[+-]?[0-9]+$/.test(t)?{kind:"int",value:Number(t)}:{kind:"int",value:this.evaluateInt(t)}}renderNumericExpression(e){return Wu(Zu(e)).map(t=>{if(t.t==="number")return t.literal;if(t.t==="identifier"){const n=this.state.variables.get(t.name);if(!n)throw w1(t.name,this.state.variables);return _e(n)}return t.t}).join(" ").replaceAll("( ","(").replaceAll(" )",")").replaceAll(" . ",".").replaceAll("[ ","[").replaceAll(" ]","]")}}const Gh={baseIndent:0,indentPerLevel:4,includeDiagramTextAsComments:!1,includeEmptyElseBranch:!0,pseudocodeNote:"Pseudocode – not a runnable program"};function Is(i,e,t={},n=[]){const a=u0(i,e,t);let s="";e==="javascript"&&(s+=`"use strict"; `);const r=[i,...e==="java"?[]:n];if(e==="python"&&r.some(sg)&&(s+=`import random @@ -29,7 +29,7 @@ except: `),i.pseudocode&&(s+=(e==="python"?"# ":"// ")+a.pseudocodeNote+` `),e!=="java")for(const u of n){if(u===i)continue;const m=St(u.caption);m&&(s+=No(u,m,e,t,0)+` -`)}const o=St(i.caption),l={out:""};if(o)l.out=No(i,o,e,t,a.baseIndent);else for(const u of i.elements)mr(u,e,a,a.baseIndent,l);if(s+=l.out,s.trim()===""){const u=Cb(e);return e==="javascript"?`"use strict"; +`)}const o=St(i.caption),l={out:""};if(o)l.out=No(i,o,e,t,a.baseIndent);else for(const u of i.elements)mr(u,e,a,a.baseIndent,l);if(s+=l.out,s.trim()===""){const u=Ab(e);return e==="javascript"?`"use strict"; `+u:u}return ug(s.replace(/^[\n\r]+|[\n\r]+$/g,""),e)}function u0(i,e,t){const n={...Gh,...t,jsIntVariables:new Set,arrayElementTypes:Wb(i),stringVariables:Lb(i)};return e!=="java"&&(n.jsIntVariables=sx(i)),n}const Ru=i=>i==="string"?"String":i===void 0?"void":i;function Hh(i){const e=i.params.map(t=>`${Ru(t.type)}${"[]".repeat(t.dims??0)} ${t.name}`).join(", ");return`public static ${Ru(i.returnType)} ${i.name}(${e}) {`}function No(i,e,t,n,a){const s=u0(i,t,n);for(const l of e.params)l.dims||(l.type==="int"&&s.jsIntVariables.add(l.name),l.type==="string"&&s.stringVariables.add(l.name));const r=e.params.map(l=>l.name).join(", "),o={out:""};for(const l of i.elements)mr(l,t,s,a+s.indentPerLevel,o);switch(o.out.trim()===""&&(o.out=Z(a+s.indentPerLevel)+(t==="python"?`pass `:` @@ -38,16 +38,16 @@ ${o.out}${Z(a)}} `;case"python":return`${Z(a)}def ${e.name}(${r}): ${o.out}`;case"javascript":return`${Z(a)}function ${e.name}(${r}) { ${o.out}${Z(a)}} -`}}const Z=i=>i>0?" ".repeat(i):"";function ye(i,e){const t=i.exec(e);return t?Array.from(t,n=>n??""):void 0}function Cb(i,e){return i==="python"?"# empty element":"// empty element"}const Fo=i=>i.trim()==="ø";function Vh(i,e){return Z(i)+(e==="python"?`# empty element +`}}const Z=i=>i>0?" ".repeat(i):"";function ye(i,e){const t=i.exec(e);return t?Array.from(t,n=>n??""):void 0}function Ab(i,e){return i==="python"?"# empty element":"// empty element"}const Fo=i=>i.trim()==="ø";function Vh(i,e){return Z(i)+(e==="python"?`# empty element `:`// empty element -`)}function Ab(i){switch(i.type){case T.leerElement:return!0;case T.anweisung:case T.aufruf:return i.textLines.map(e=>e.trim()).every(e=>e===""||Fo(e));default:return!1}}function Pb(i){return i.every(Ab)}function m0(i,e,t){const n=i.map(a=>a.replace(/^[ \t]+|[ \t]+$/g,"")).filter(a=>a!=="");return n.length===0?"":e==="python"?Z(t)+`""" +`)}function Cb(i){switch(i.type){case T.leerElement:return!0;case T.anweisung:case T.aufruf:return i.textLines.map(e=>e.trim()).every(e=>e===""||Fo(e));default:return!1}}function Db(i){return i.every(Cb)}function m0(i,e,t){const n=i.map(a=>a.replace(/^[ \t]+|[ \t]+$/g,"")).filter(a=>a!=="");return n.length===0?"":e==="python"?Z(t)+`""" `+n.map(a=>Z(t)+a+` `).join("")+Z(t)+`""" `:n.length===1?Z(t)+"/* "+n[0]+` */ `:Z(t)+`/* `+n.map(a=>Z(t)+" * "+a+` `).join("")+Z(t)+` */ -`}const Db=i=>i==="java"||i==="javascript";function ks(i){const e=i.trim();if(e==="")return"";if(e.startsWith("//")||e.startsWith("/*")||e.startsWith("*")||e.startsWith("#")||e.startsWith("{")||e.startsWith("}")||e.endsWith("{")||e.endsWith(";"))return e;const t=e.toLowerCase();for(const n of["if ","else","for ","while ","do ","switch ","case ","default"])if(t.startsWith(n))return e;return e+";"}function $a(i){const e=i.map(t=>t.trim()).filter(t=>t!=="");return Bb(e.length===0?"true":e.join(" "))}function Bb(i){const e=i.trim();for(const t of["if","while","until","switch"]){const n=qh(t,e);if(n!==void 0)return n===""?"true":n}return e}function qh(i,e){if(!e.toLowerCase().startsWith(i))return;const t=e.slice(i.length);if(!(t===""||/^\s/.test(t)||t[0]==="("))return;let n=t.trim();return n.startsWith("(")&&n.endsWith(")")&&n.length>=2&&(n=n.slice(1,-1).trim()),n}function Qt(i){let e=i.trim();for(;e.endsWith(";");)e=e.slice(0,-1).trim();return e}function Ob(i){const e=i.trim(),t=e.toLowerCase();let n;if(t.startsWith("output:"))n=e.slice(7).trim();else if(t.startsWith("print:"))n=e.slice(6).trim();else return;return n===""?void 0:n}const or=i=>i.name.includes("[")&&i.name.includes("]");function c0(i){const e=i.trim();if(e==="")return;const t=ye(/^\s*(integer|int|long|float|double|string|boolean|char|bool)\s+([a-zA-Z_]\w*(?:\s*\[[^\]]+\])?)(?:\s+"([^"]*)")?\s*$/i,e);if(t){const s=t[2].replaceAll(" ","");if(s==="")return;const r=(t[3]??"").trim();return{type:Ss(t[1]),name:s,customPrompt:r===""?void 0:r}}const n=ye(/^\s*([a-zA-Z_]\w*(?:\s*\[[^\]]+\])?)\s+"([^"]*)"\s*$/i,e);if(n){const s=n[1].replaceAll(" ","");return["int","integer","long","float","double","string","boolean","char","bool","void"].includes(s.toLowerCase())?void 0:{type:s.includes("[")?"String":"int",name:s,customPrompt:n[2].trim()}}const a=Mb(e);if(a)return{type:Ss(a[0]),name:a[1]}}function Ss(i){switch(i.trim().toLowerCase()){case"integer":case"int":return"int";case"long":return"long";case"float":return"float";case"double":return"double";case"string":return"String";case"boolean":case"bool":return"boolean";case"char":return"char";default:return i}}function Mb(i){const e=i.split(/[ \t]+/).filter(Boolean);if(e.length===0)return;if(e.length>=2)return[e[0],e[1]];if(!["int","double","string","boolean","char","long","float","short","byte","void","bool","integer"].includes(e[0].toLowerCase()))return["int",e[0]]}function Zb(i,e,t,n,a){const s=Qt(i).trim();if(s.startsWith('"'))switch(e){case"java":return Z(t)+"System.out.println("+s+`); +`}const Pb=i=>i==="java"||i==="javascript";function ks(i){const e=i.trim();if(e==="")return"";if(e.startsWith("//")||e.startsWith("/*")||e.startsWith("*")||e.startsWith("#")||e.startsWith("{")||e.startsWith("}")||e.endsWith("{")||e.endsWith(";"))return e;const t=e.toLowerCase();for(const n of["if ","else","for ","while ","do ","switch ","case ","default"])if(t.startsWith(n))return e;return e+";"}function $a(i){const e=i.map(t=>t.trim()).filter(t=>t!=="");return Bb(e.length===0?"true":e.join(" "))}function Bb(i){const e=i.trim();for(const t of["if","while","until","switch"]){const n=qh(t,e);if(n!==void 0)return n===""?"true":n}return e}function qh(i,e){if(!e.toLowerCase().startsWith(i))return;const t=e.slice(i.length);if(!(t===""||/^\s/.test(t)||t[0]==="("))return;let n=t.trim();return n.startsWith("(")&&n.endsWith(")")&&n.length>=2&&(n=n.slice(1,-1).trim()),n}function Qt(i){let e=i.trim();for(;e.endsWith(";");)e=e.slice(0,-1).trim();return e}function Ob(i){const e=i.trim(),t=e.toLowerCase();let n;if(t.startsWith("output:"))n=e.slice(7).trim();else if(t.startsWith("print:"))n=e.slice(6).trim();else return;return n===""?void 0:n}const or=i=>i.name.includes("[")&&i.name.includes("]");function c0(i){const e=i.trim();if(e==="")return;const t=ye(/^\s*(integer|int|long|float|double|string|boolean|char|bool)\s+([a-zA-Z_]\w*(?:\s*\[[^\]]+\])?)(?:\s+"([^"]*)")?\s*$/i,e);if(t){const s=t[2].replaceAll(" ","");if(s==="")return;const r=(t[3]??"").trim();return{type:Ss(t[1]),name:s,customPrompt:r===""?void 0:r}}const n=ye(/^\s*([a-zA-Z_]\w*(?:\s*\[[^\]]+\])?)\s+"([^"]*)"\s*$/i,e);if(n){const s=n[1].replaceAll(" ","");return["int","integer","long","float","double","string","boolean","char","bool","void"].includes(s.toLowerCase())?void 0:{type:s.includes("[")?"String":"int",name:s,customPrompt:n[2].trim()}}const a=Mb(e);if(a)return{type:Ss(a[0]),name:a[1]}}function Ss(i){switch(i.trim().toLowerCase()){case"integer":case"int":return"int";case"long":return"long";case"float":return"float";case"double":return"double";case"string":return"String";case"boolean":case"bool":return"boolean";case"char":return"char";default:return i}}function Mb(i){const e=i.split(/[ \t]+/).filter(Boolean);if(e.length===0)return;if(e.length>=2)return[e[0],e[1]];if(!["int","double","string","boolean","char","long","float","short","byte","void","bool","integer"].includes(e[0].toLowerCase()))return["int",e[0]]}function Zb(i,e,t,n,a){const s=Qt(i).trim();if(s.startsWith('"'))switch(e){case"java":return Z(t)+"System.out.println("+s+`); `;case"javascript":return Z(t)+"console.log("+s+`); `;case"python":return Z(t)+"print("+Mn(s,n,a)+`) `}}function Oi(i){return i.replaceAll("\\","\\\\").replaceAll('"','\\"').replaceAll(` @@ -132,10 +132,10 @@ ${o.out}${Z(a)}} `}const r=Kb(i);if(!r)return;if(e==="javascript")return Z(t)+ks(`let ${r.name} = ${ag(r.rhs,r.isArray)}`)+` `;const l=!r.isArray&&lr(r.rhs)===void 0&&r.rhs.trim()!=="null"?Mn(r.rhs,n,a):ix(r.rhs,r.isArray,n);return Z(t)+`${r.name} = ${l} `}function yn(i,e){for(const t of i){e(t),t.loopBody&&yn(t.loopBody,e);for(const n of t.cases??[])yn(n.elements,e)}}function sx(i){const e=n=>["int","integer","long","short","byte"].includes(n.trim().toLowerCase()),t=new Set;return yn(i.elements,n=>{for(const a of n.textLines){const s=a.trim();if(s==="")continue;if(s.toLowerCase().startsWith("input:")){const l=c0(s.slice(6).trim());l&&e(l.type)&&!l.name.includes("[")&&t.add(l.name);continue}const r=$h(s);if(r&&e(r.rawType)){t.add(r.name);continue}const o=ye(/^\s*(integer|int|long|short|byte)\s+([a-zA-Z_]\w*)\s*=/i,s);o&&t.add(o[2].trim())}}),t}function Vo(i,e){const t=r=>/^\d+$/.test(r)||e.has(r),n=String.raw`(?:[a-zA-Z_]\w*|\d+(?:\.\d+)?)`,a=new RegExp(String.raw`(?{const o=r.split(/\s*([*/%])\s*/);if(!o.some(m=>m==="/"))return r;let l=o[0],u=t(o[0]);for(let m=1;mr.replace(a,s).replace(new RegExp("(?t(l)&&t(u)?`${l} = Math.trunc(${l} / ${u})`:o))}function Ts(i){let e=!1;return yn(i.elements,t=>{t.type===T.anweisung&&t.textLines.some(n=>n.trim().toLowerCase().startsWith("input:"))&&(e=!0)}),e}const f0="import java.util.Arrays;";function b0(i){let e=!1,t=!1,n=!1,a=!1;return yn(i.elements,s=>{for(const r of s.textLines)/\bArrays\s*\./.test(r)&&(a=!0),/\bFiles\s*\./.test(r)&&(e=!0),/\bnew\s+(?:File|PrintWriter|FileReader|FileWriter|BufferedReader)\s*\(/.test(r)&&(t=!0),/\bnew\s+Scanner\s*\(\s*new\s+File\b/.test(r)&&(n=!0)}),[...t?["import java.io.*;"]:[],...e?["import java.nio.file.*;"]:[],...n?["import java.util.Scanner;"]:[],...a?[f0]:[]]}function rx(i){return b0(i).some(e=>e!==f0)}function sg(i){let e=!1;return yn(i.elements,t=>{t.textLines.some(n=>/\bMath\.random\s*\(/i.test(n))&&(e=!0)}),e}function ca(i,e){const t=i.trim();return t===""?e==="python"?'""':"0":e==="java"||new RegExp("^\\p{N}+$","u").test(t)||p0(t)?t:'"'+t.replaceAll('"','\\"')+'"'}function X1(i,e){const t=i.trim();if(t==="")return"";switch(e){case"java":return"/* "+t+" */";case"python":return" # "+t;case"javascript":return" /* "+t+" */"}}function ox(i,e,t,n,a){const s=i.map(r=>r.trim());if(s.every(r=>r==="")){t.live&&(a.out+=Z(n)+(e==="python"?"pass":";")+` -`);return}if(t.includeDiagramTextAsComments){const r=s.filter(o=>o!==""&&!Fo(o));r.length>0&&(a.out+=m0(r,e,n))}for(const r of s){if(r==="")continue;if(Fo(r)){a.out+=t.live?v0(n,t.live):Vh(n,e);continue}const o=t.jsIntVariables??new Set,l=t.arrayElementTypes??new Map,u=t.stringVariables??new Set,m=(e==="java"?Eb(r,n,l):void 0)??(e==="javascript"?Nb(r,n,l):void 0)??(e==="python"?Fb(r,n,l):void 0)??Jb(r,e,n,o,u)??qb(r,e,n,o,u)??$b(r,e,n,o)??ax(r,e,n,o,u)??Zb(r,e,n,o,u);if(m!==void 0){a.out+=e==="javascript"?Vo(m,o):m;continue}let c=r;Db(e)?c=ks(e==="javascript"?Vo(r,o):r):e==="python"&&(c=eg(r,o,u)),c!==""&&(a.out+=Z(n)+c+` +`);return}if(t.includeDiagramTextAsComments){const r=s.filter(o=>o!==""&&!Fo(o));r.length>0&&(a.out+=m0(r,e,n))}for(const r of s){if(r==="")continue;if(Fo(r)){a.out+=t.live?v0(n,t.live):Vh(n,e);continue}const o=t.jsIntVariables??new Set,l=t.arrayElementTypes??new Map,u=t.stringVariables??new Set,m=(e==="java"?Eb(r,n,l):void 0)??(e==="javascript"?Nb(r,n,l):void 0)??(e==="python"?Fb(r,n,l):void 0)??Jb(r,e,n,o,u)??qb(r,e,n,o,u)??$b(r,e,n,o)??ax(r,e,n,o,u)??Zb(r,e,n,o,u);if(m!==void 0){a.out+=e==="javascript"?Vo(m,o):m;continue}let c=r;Pb(e)?c=ks(e==="javascript"?Vo(r,o):r):e==="python"&&(c=eg(r,o,u)),c!==""&&(a.out+=Z(n)+c+` `)}}function vi(i,e,t,n,a,s,r,o=(l=>(l=a.live)==null?void 0:l.labels.condition)()){if(a.includeDiagramTextAsComments&&(r.out+=m0(t,n,s)),o!==void 0&&y0(t)){r.out+=Z(s)+i+n1(o)+e;return}const u=$a(t),m=a.jsIntVariables??new Set,c=n==="python"?Ze(u,m):n==="javascript"?Vo(u,m):u;r.out+=Z(s)+i+c+e}function S1(i,e,t,n,a){const s=a.out.length;for(const o of i)mr(o,e,t,n,a);if(t.live&&a.out.length===s&&(a.out+=v0(n,t.live)),e!=="python")return;a.out.slice(s).split(` `).map(o=>o.trim()).every(o=>o===""||o.startsWith("#"))&&(a.out+=Z(n)+`pass -`)}function lx(i,e){var n;if(e.includeDiagramTextAsComments||i.length!==1)return;const t=i[0];return t.type===T.verzweigung&&(((n=t.cases)==null?void 0:n.length)??0)>=2?t:void 0}function qo(i,e,t,n,a,s){const r=i.cases;if(!r||r.length<2)return;const o=e==="python",l=n+t.indentPerLevel,u=!t.includeEmptyElseBranch&&Pb(r[1].elements),m=u?void 0:lx(r[1].elements,t);if(o){vi(s?"elif ":"if ",`: +`)}function lx(i,e){var n;if(e.includeDiagramTextAsComments||i.length!==1)return;const t=i[0];return t.type===T.verzweigung&&(((n=t.cases)==null?void 0:n.length)??0)>=2?t:void 0}function qo(i,e,t,n,a,s){const r=i.cases;if(!r||r.length<2)return;const o=e==="python",l=n+t.indentPerLevel,u=!t.includeEmptyElseBranch&&Db(r[1].elements),m=u?void 0:lx(r[1].elements,t);if(o){vi(s?"elif ":"if ",`: `,i.textLines,e,t,n,a),S1(r[0].elements,e,t,l,a),m?qo(m,e,t,n,a,!0):u||(a.out+=Z(n)+`else: `,S1(r[1].elements,e,t,l,a));return}if(vi(s?"} else if (":"if (",`) { `,i.textLines,e,t,n,a),S1(r[0].elements,e,t,l,a),m){const c=a.out.length;qo(m,e,t,n,a,!0),og(t,m,a,c)}else u||(a.out+=Z(n)+`} else { @@ -290,7 +290,7 @@ onmessage = async (e) => { `;const e=a=>this.element.querySelector(a);this.codeView=e(".code-view"),this.javaModeRow=e(".java-mode"),this.runButton=e("[data-act=run]"),this.saveButton=e("[data-act=save]"),this.copyButton=e("[data-act=copy]"),this.runner=e(".runner"),this.runOutput=e(".runner-out"),this.runInput=e(".runner-input"),this.pseudocodeBox=e("[data-opt=pseudocode]"),this.pseudocodeHint=e(".pseudocode-hint"),this.pseudocodeBox.addEventListener("change",()=>this.setPseudocode(this.pseudocodeBox.checked)),e(".code-close").addEventListener("click",()=>this.onClose());for(const a of this.element.querySelectorAll("[data-target]"))a.addEventListener("click",()=>{this.target=a.dataset.target,ha(zn.target,this.target),this.refresh()});for(const a of this.element.querySelectorAll("[data-java-mode]"))a.addEventListener("click",()=>{this.javaMode=a.dataset.javaMode,ha(zn.javaMode,this.javaMode),this.refresh()});const t=e("[data-opt=comments]");t.checked=this.comments,t.addEventListener("change",()=>{this.comments=t.checked,ha(zn.comments,String(this.comments)),this.refresh()});const n=e("[data-opt=emptyElse]");n.checked=this.emptyElse,n.addEventListener("change",()=>{this.emptyElse=n.checked,ha(zn.emptyElse,String(this.emptyElse)),this.refresh()}),this.copyButton.addEventListener("click",()=>this.copy()),this.saveButton.addEventListener("click",()=>{const a=cr(this.classStem()),s=Vu(this.currentDocument(),this.classStem(),this.options());this.saveFile(`${a}.java`,s)}),this.runButton.addEventListener("click",()=>this.run()),e("[data-act=stop]").addEventListener("click",()=>this.stopRun(!1)),e("[data-act=cancel]").addEventListener("click",()=>this.answer(null)),this.runInput.addEventListener("submit",a=>{a.preventDefault(),this.answer(this.runInput.querySelector("input").value)})}async copy(){var t;let e=!1;try{await navigator.clipboard.writeText(this.code),e=!0}catch{const n=document.createRange();n.selectNodeContents(this.codeView);const a=getSelection();a==null||a.removeAllRanges(),a==null||a.addRange(n),e=((t=document.execCommand)==null?void 0:t.call(document,"copy"))??!1}this.copyButton.textContent=p(e?"web_copied_check":"web_copy_manual"),setTimeout(()=>this.copyButton.textContent=p("codegen_copy"),2e3)}run(){this.stopRun(!0),this.runner.hidden=!1,this.runOutput.textContent="",this.outputLines=[],this.droppedLines=0,this.runOutput.classList.remove("error");const e=zx(this.code),t=n=>this.onRunnerMessage(n);try{const n=URL.createObjectURL(new Blob([Ix],{type:"text/javascript"})),a=new Worker(n);URL.revokeObjectURL(n),a.onmessage=s=>t(s.data),a.onerror=s=>{s.preventDefault(),t({type:"error",text:s.message||p("web_run_error")})},a.postMessage({type:"run",code:e}),this.worker=a}catch{this.runInPage(e,t)}this.setRunning(!0)}runInPage(e,t){const n={log:(...r)=>t({type:"log",lines:[r.map(o=>typeof o=="string"?o:JSON.stringify(o)).join(" ")]})},a=r=>new Promise((o,l)=>{this.pendingAnswer=u=>u===null?l(new Error(cg())):o(u),t({type:"prompt",text:r})}),s=(async()=>{}).constructor;new s("__visuStructPrompt","console",e)(a,n).then(()=>t({type:"done"})).catch(r=>t({type:"error",text:String(r)}))}onRunnerMessage(e){switch(e.type){case"log":this.appendOutput(e.lines??[]);break;case"prompt":{this.runInput.hidden=!1,this.runInput.querySelector("label").textContent=e.text??"";const t=this.runInput.querySelector("input");t.value="",t.focus();break}case"error":this.appendOutput([e.text??""]),this.runOutput.classList.add("error"),this.stopRun(!1);break;case"done":this.stopRun(!1);break}}appendOutput(e){this.outputLines.push(...e),this.outputLines.length>Zr&&(this.droppedLines+=this.outputLines.length-Zr,this.outputLines.splice(0,this.outputLines.length-Zr)),this.outputFrame===void 0&&(this.outputFrame=requestAnimationFrame(()=>{this.outputFrame=void 0;const t=this.droppedLines>0?p("web_run_dropped_fmt",this.droppedLines)+` `:"";this.runOutput.textContent=t+this.outputLines.join(` `)+(this.outputLines.length?` -`:""),this.runOutput.scrollTop=this.runOutput.scrollHeight}))}answer(e){var t;this.runInput.hidden=!0,this.worker?this.worker.postMessage({type:"answer",value:e}):(t=this.pendingAnswer)==null||t.call(this,e),this.pendingAnswer=void 0}stopRun(e){var t;(t=this.worker)==null||t.terminate(),this.worker=void 0,this.pendingAnswer=void 0,this.runInput&&(this.runInput.hidden=!0),e&&this.runner&&(this.runner.hidden=!0),this.setRunning(!1)}setRunning(e){const t=this.element.querySelector("[data-act=stop]");t&&(t.disabled=!e)}}const Be=(i,e=!1)=>``,me={newFile:Be(''),open:Be(''),save:Be(''),undo:Be(''),redo:Be(''),cut:Be(''),copy:Be(''),paste:Be(''),trash:Be(''),share:Be(''),book:Be(''),code:Be(''),play:Be('',!0),step:Be(''),indent:Be(''),stop:Be('',!0),folder:Be(''),newFolder:Be(''),diagram:Be(''),fileText:Be('')},Sx="visustruct.learn.progress",Lr={"04-sequenz":"05-sequenz","05-variablen-und-datentypen":"04-variablen-und-datentypen","07-verzweigung":"08-verzweigung","08-bedingungen-verknuepfen":"09-bedingungen-verknuepfen","09-fallauswahl":"10-fallauswahl","10-while-schleife":"11-while-schleife","11-do-while-schleife":"12-do-while-schleife","12-for-schleife":"13-for-schleife","13-verschachteln":"14-verschachteln","14-arrays":"15-arrays","15-aufruf-und-aussprung":"18-aufruf-und-aussprung","16-aufruf-und-aussprung":"18-aufruf-und-aussprung","17-aufruf-und-aussprung":"18-aufruf-und-aussprung","17-suchen-und-sortieren":"19-suchen-und-sortieren","18-suchen-und-sortieren":"19-suchen-und-sortieren","16-simulation-und-schreibtischtest":"07-simulation-und-schreibtischtest","17-java":"20-java","18-java":"20-java","19-java":"20-java","18-python-und-javascript":"21-python-und-javascript","19-python-und-javascript":"21-python-und-javascript","20-python-und-javascript":"21-python-und-javascript","22-erstes-fenster":"28-erstes-fenster","23-knopf-im-fenster":"29-knopf-im-fenster","24-der-knopf-reagiert":"30-der-knopf-reagiert","23-erstes-fenster":"28-erstes-fenster","24-knopf-im-fenster":"29-knopf-im-fenster","25-der-knopf-reagiert":"30-der-knopf-reagiert","26-zahl-verdoppeln":"31-zahl-verdoppeln","27-klickzaehler":"32-klickzaehler","28-ampel":"33-ampel","29-notenrechner":"34-notenrechner","30-taschenrechner":"35-taschenrechner","31-zahlenraten":"36-zahlenraten","13-lautsprecher":"16-lautsprecher","14-bildschirm":"18-bildschirm","15-motoren":"20-motoren","16-stoppuhr-akku":"21-stoppuhr-akku","03-sensoren":"04-sensoren","04-bis-zur-wand":"05-bis-zur-wand","05-abstand":"06-abstand","06-linie":"07-linie","07-farben":"08-farben","08-tasten-joystick":"10-tasten-joystick","09-licht":"11-licht","10-lautstaerke":"12-lautstaerke","11-neigung":"13-neigung","12-leds":"14-leds","13-einzelne-leds":"15-einzelne-leds","14-lautsprecher":"16-lautsprecher","15-bildschirm":"18-bildschirm","16-motoren":"20-motoren","17-stoppuhr-akku":"21-stoppuhr-akku"};function Tx(i){var n;const e={...i.lessons};for(const[a,s]of Object.entries(Lr))i.lessons[a]&&!i.lessons[s]&&(e[s]=i.lessons[a]),i.lessons[a]&&delete e[a];const t=(n=i.view)!=null&&n.lesson&&Lr[i.view.lesson]?{...i.view,lesson:Lr[i.view.lesson]}:i.view;return{...i,lessons:e,view:t}}function _x(){try{localStorage.removeItem(Sx)}catch{}}const dg=()=>({lessons:{},exercises:{}});_x();let tt=dg();const Uo=new Set;function ga(){for(const i of Uo)i()}const qu="visustruct-lernstand";function hg(i,e){return i||e||void 0}function jx(i,e){if(!i)return e;const t={...e.checks};for(const[n,a]of Object.entries(i.checks??{}))t[n]=a||t[n]||!1;return{step:Math.max(i.step??0,e.step??0),done:hg(i.done,e.done),checks:Object.keys(t).length?t:void 0,quiz:i.quiz||e.quiz?{...e.quiz,...i.quiz}:void 0}}function Cx(i,e){const t={...i.lessons};for(const[a,s]of Object.entries(e.lessons))t[a]=jx(i.lessons[a],s);const n={...i.exercises};for(const[a,s]of Object.entries(e.exercises)){const r=i.exercises[a];n[a]=r?{done:hg(r.done,s.done),xml:r.xml??s.xml}:s}return{lessons:t,exercises:n}}const xe={lesson(i){return tt.lessons[i]??{step:0}},updateLesson(i,e){tt.lessons[i]={...xe.lesson(i),...e},ga()},exercise(i){return tt.exercises[i]??{}},updateExercise(i,e){tt.exercises[i]={...xe.exercise(i),...e},ga()},resetExercise(i){delete tt.exercises[i],ga()},view(){return tt.view},hasContent(){return Object.values(tt.lessons).some(i=>i.step>0||i.done||i.checks||i.quiz)||Object.keys(tt.exercises).length>0},setView(i){tt.view=i,ga()},onChange(i){return Uo.add(i),()=>Uo.delete(i)},toFile(){return JSON.stringify({format:qu,version:1,saved:new Date().toISOString(),lessons:tt.lessons,exercises:tt.exercises,view:tt.view},null,2)},loadFile(i,e=!1){let t;try{t=JSON.parse(i)}catch{return!1}if((t==null?void 0:t.format)!==qu)return!1;const n=Tx({lessons:t.lessons??{},exercises:t.exercises??{},view:t.view});return tt=e?{...Cx(tt,n),view:n.view??tt.view}:n,!0},clear(){tt=dg()}};function Qu(i=new Date){const e=t=>String(t).padStart(2,"0");return`${i.getFullYear()}-${e(i.getMonth()+1)}-${e(i.getDate())}`}const Uu=i=>/^\d{4}-\d{2}-\d{2}$/.test(i);function Ax(i,e){return i.kind!==e.kind?i.kind==="directory"?-1:1:Uu(i.name)&&Uu(e.name)?e.name.localeCompare(i.name):i.name.localeCompare(e.name,void 0,{numeric:!0,sensitivity:"base"})}function Px(i,e){return i.replace(/\.(visustruct|strk|java)$/i,"").replace(/[\\/:*?"<>|\u0000-\u001f]/g,"-").replace(/\s+/g," ").trim().replace(/^\.+/,"")||e}function Dx(i,e){const t=new Set([...e].map(a=>a.toLowerCase())),n=a=>!t.has(`${a}.visustruct`.toLowerCase())&&!t.has(`${a}.java`.toLowerCase());if(n(i))return i;for(let a=2;;a++)if(n(`${i} ${a}`))return`${i} ${a}`}function Bx(i){const e=i.replace(/[\\/:*?"<>|\u0000-\u001f]/g,"").trim();return e&&e!=="."&&e!==".."?e:void 0}const Yn=10;function gg(i){let e=i.replace(/\r/g,"").split(` +`:""),this.runOutput.scrollTop=this.runOutput.scrollHeight}))}answer(e){var t;this.runInput.hidden=!0,this.worker?this.worker.postMessage({type:"answer",value:e}):(t=this.pendingAnswer)==null||t.call(this,e),this.pendingAnswer=void 0}stopRun(e){var t;(t=this.worker)==null||t.terminate(),this.worker=void 0,this.pendingAnswer=void 0,this.runInput&&(this.runInput.hidden=!0),e&&this.runner&&(this.runner.hidden=!0),this.setRunning(!1)}setRunning(e){const t=this.element.querySelector("[data-act=stop]");t&&(t.disabled=!e)}}const Be=(i,e=!1)=>``,me={newFile:Be(''),open:Be(''),save:Be(''),undo:Be(''),redo:Be(''),cut:Be(''),copy:Be(''),paste:Be(''),trash:Be(''),share:Be(''),book:Be(''),code:Be(''),play:Be('',!0),step:Be(''),indent:Be(''),stop:Be('',!0),folder:Be(''),newFolder:Be(''),diagram:Be(''),fileText:Be('')},Sx="visustruct.learn.progress",Lr={"04-sequenz":"05-sequenz","05-variablen-und-datentypen":"04-variablen-und-datentypen","07-verzweigung":"08-verzweigung","08-bedingungen-verknuepfen":"09-bedingungen-verknuepfen","09-fallauswahl":"10-fallauswahl","10-while-schleife":"11-while-schleife","11-do-while-schleife":"12-do-while-schleife","12-for-schleife":"13-for-schleife","13-verschachteln":"14-verschachteln","14-arrays":"15-arrays","15-aufruf-und-aussprung":"18-aufruf-und-aussprung","16-aufruf-und-aussprung":"18-aufruf-und-aussprung","17-aufruf-und-aussprung":"18-aufruf-und-aussprung","17-suchen-und-sortieren":"19-suchen-und-sortieren","18-suchen-und-sortieren":"19-suchen-und-sortieren","16-simulation-und-schreibtischtest":"07-simulation-und-schreibtischtest","17-java":"20-java","18-java":"20-java","19-java":"20-java","18-python-und-javascript":"21-python-und-javascript","19-python-und-javascript":"21-python-und-javascript","20-python-und-javascript":"21-python-und-javascript","22-erstes-fenster":"28-erstes-fenster","23-knopf-im-fenster":"29-knopf-im-fenster","24-der-knopf-reagiert":"30-der-knopf-reagiert","23-erstes-fenster":"28-erstes-fenster","24-knopf-im-fenster":"29-knopf-im-fenster","25-der-knopf-reagiert":"30-der-knopf-reagiert","26-zahl-verdoppeln":"31-zahl-verdoppeln","27-klickzaehler":"32-klickzaehler","28-ampel":"33-ampel","29-notenrechner":"34-notenrechner","30-taschenrechner":"35-taschenrechner","31-zahlenraten":"36-zahlenraten","13-lautsprecher":"16-lautsprecher","14-bildschirm":"18-bildschirm","15-motoren":"20-motoren","16-stoppuhr-akku":"21-stoppuhr-akku","03-sensoren":"04-sensoren","04-bis-zur-wand":"05-bis-zur-wand","05-abstand":"06-abstand","06-linie":"07-linie","07-farben":"08-farben","08-tasten-joystick":"10-tasten-joystick","09-licht":"11-licht","10-lautstaerke":"12-lautstaerke","11-neigung":"13-neigung","12-leds":"14-leds","13-einzelne-leds":"15-einzelne-leds","14-lautsprecher":"16-lautsprecher","15-bildschirm":"18-bildschirm","16-motoren":"20-motoren","17-stoppuhr-akku":"21-stoppuhr-akku"};function Tx(i){var n;const e={...i.lessons};for(const[a,s]of Object.entries(Lr))i.lessons[a]&&!i.lessons[s]&&(e[s]=i.lessons[a]),i.lessons[a]&&delete e[a];const t=(n=i.view)!=null&&n.lesson&&Lr[i.view.lesson]?{...i.view,lesson:Lr[i.view.lesson]}:i.view;return{...i,lessons:e,view:t}}function _x(){try{localStorage.removeItem(Sx)}catch{}}const dg=()=>({lessons:{},exercises:{}});_x();let tt=dg();const Uo=new Set;function ga(){for(const i of Uo)i()}const qu="visustruct-lernstand";function hg(i,e){return i||e||void 0}function jx(i,e){if(!i)return e;const t={...e.checks};for(const[n,a]of Object.entries(i.checks??{}))t[n]=a||t[n]||!1;return{step:Math.max(i.step??0,e.step??0),done:hg(i.done,e.done),checks:Object.keys(t).length?t:void 0,quiz:i.quiz||e.quiz?{...e.quiz,...i.quiz}:void 0}}function Ax(i,e){const t={...i.lessons};for(const[a,s]of Object.entries(e.lessons))t[a]=jx(i.lessons[a],s);const n={...i.exercises};for(const[a,s]of Object.entries(e.exercises)){const r=i.exercises[a];n[a]=r?{done:hg(r.done,s.done),xml:r.xml??s.xml}:s}return{lessons:t,exercises:n}}const xe={lesson(i){return tt.lessons[i]??{step:0}},updateLesson(i,e){tt.lessons[i]={...xe.lesson(i),...e},ga()},exercise(i){return tt.exercises[i]??{}},updateExercise(i,e){tt.exercises[i]={...xe.exercise(i),...e},ga()},resetExercise(i){delete tt.exercises[i],ga()},view(){return tt.view},hasContent(){return Object.values(tt.lessons).some(i=>i.step>0||i.done||i.checks||i.quiz)||Object.keys(tt.exercises).length>0},setView(i){tt.view=i,ga()},onChange(i){return Uo.add(i),()=>Uo.delete(i)},toFile(){return JSON.stringify({format:qu,version:1,saved:new Date().toISOString(),lessons:tt.lessons,exercises:tt.exercises,view:tt.view},null,2)},loadFile(i,e=!1){let t;try{t=JSON.parse(i)}catch{return!1}if((t==null?void 0:t.format)!==qu)return!1;const n=Tx({lessons:t.lessons??{},exercises:t.exercises??{},view:t.view});return tt=e?{...Ax(tt,n),view:n.view??tt.view}:n,!0},clear(){tt=dg()}};function Qu(i=new Date){const e=t=>String(t).padStart(2,"0");return`${i.getFullYear()}-${e(i.getMonth()+1)}-${e(i.getDate())}`}const Uu=i=>/^\d{4}-\d{2}-\d{2}$/.test(i);function Cx(i,e){return i.kind!==e.kind?i.kind==="directory"?-1:1:Uu(i.name)&&Uu(e.name)?e.name.localeCompare(i.name):i.name.localeCompare(e.name,void 0,{numeric:!0,sensitivity:"base"})}function Dx(i,e){return i.replace(/\.(visustruct|strk|java)$/i,"").replace(/[\\/:*?"<>|\u0000-\u001f]/g,"-").replace(/\s+/g," ").trim().replace(/^\.+/,"")||e}function Px(i,e){const t=new Set([...e].map(a=>a.toLowerCase())),n=a=>!t.has(`${a}.visustruct`.toLowerCase())&&!t.has(`${a}.java`.toLowerCase());if(n(i))return i;for(let a=2;;a++)if(n(`${i} ${a}`))return`${i} ${a}`}function Bx(i){const e=i.replace(/[\\/:*?"<>|\u0000-\u001f]/g,"").trim();return e&&e!=="."&&e!==".."?e:void 0}const Yn=10;function gg(i){let e=i.replace(/\r/g,"").split(` `).filter(m=>!m.startsWith("//"));const t=e.filter(m=>/^linie:/.test(m)).map(m=>m.slice(6).trim());e=e.filter(m=>!/^linie:/.test(m));const n=e.findIndex(m=>/^raster:\s*\d+\s*$/.test(m));if(n>=0){const m=Number(e[n].split(":")[1]);e.splice(n,1),e=e.flatMap(c=>Array.from({length:m},(d,h)=>Array.from(c).map(g=>Array.from({length:m},(f,b)=>"^>v<".includes(g)?h===m>>1&&b===m>>1?g:".":g).join("")).join("")))}for(;e.length&&e[e.length-1].trim()==="";)e.pop();for(;e.length&&e[0].trim()==="";)e.shift();const s=Math.max(...e.map(m=>m.length))*Yn,r=e.length*Yn,o=(m,c)=>({x:-s/2+(m+.5)*Yn,y:r/2-(c+.5)*Yn}),l={width:s,depth:r,start:{x:0,y:0,heading:0},walls:[],lines:[],blocks:[],marks:[],goals:[],targets:[],colors:[]};let u=0;e.forEach((m,c)=>{Array.from(m).forEach((d,h)=>{const g=o(h,c);d==="#"?l.blocks.push(g):d==="="?l.marks.push(g):d==="Z"?l.goals.push(g):d==="o"?l.targets.push(g):d in Yu?l.colors.push({at:g,color:Yu[d]}):"^>v<".includes(d)&&(u++,l.start={...g,heading:{"^":0,">":90,v:180,"<":270}[d]})})});for(const m of t)l.lines.push(m.split(/\s+/).map(c=>{const[d,h]=c.split(",").map(Number);if(!Number.isFinite(d)||!Number.isFinite(h))throw new Error(`Linie: „${c}“ ist kein Feld (Spalte,Zeile).`);return o(d,h)}));if(u!==1)throw new Error(`Die Weltkarte braucht genau einen Start (^ > v <), gefunden: ${u}`);return l}const Yu={r:"red",g:"green",b:"blue",y:"yellow"},ei=(i,e)=>Math.abs(i.x-e.x)<=Yn/2&&Math.abs(i.y-e.y)<=Yn/2,$u=10,Ku=9,Ox=300,p1=8,Mx=[-3.6,-1.2,1.2,3.6],Zx=2.5,Lx=20,Wx=12,z0=100,Mi={width:200,depth:200,start:{x:0,y:0,heading:0},walls:[],lines:[]},Xu=i=>i*Math.PI/180,f1=i=>({x:Math.sin(Xu(i)),y:Math.cos(Xu(i))}),pa=()=>Array.from({length:Mh},()=>{}),em=([i,e,t])=>i>0||e>0||t>0?[i,e,t]:void 0;class _s{constructor(e=Mi){y(this,"pose");y(this,"trail");y(this,"bumps",0);y(this,"leds",pa());y(this,"screen");y(this,"wheels",[0,0]);y(this,"time",0);y(this,"timerStart",0);y(this,"blocked",!1);y(this,"blockWallCache");this.setup=e,this.pose={...e.start},this.trail=[{x:e.start.x,y:e.start.y}]}reset(){this.pose={...this.setup.start},this.trail=[{x:this.pose.x,y:this.pose.y}],this.bumps=0,this.leds=pa(),this.screen=void 0,this.wheels=[0,0],this.time=0,this.timerStart=0,this.blocked=!1}get allWalls(){const e=this.setup.width/2,t=this.setup.depth/2,n=[{x:-e,y:-t},{x:e,y:-t},{x:e,y:t},{x:-e,y:t}];return[...this.setup.walls,...n.map((a,s)=>({from:a,to:n[(s+1)%4]})),...this.blockWalls]}get blockWalls(){return this.blockWallCache??(this.blockWallCache=(this.setup.blocks??[]).flatMap(e=>{const t=Yn/2,n=[{x:e.x-t,y:e.y-t},{x:e.x+t,y:e.y-t},{x:e.x+t,y:e.y+t},{x:e.x-t,y:e.y+t}];return n.map((a,s)=>({from:a,to:n[(s+1)%4]}))})),this.blockWallCache}atGoal(){const e=f1(this.pose.heading),t={x:this.pose.x+e.x*p1,y:this.pose.y+e.y*p1};return(this.setup.goals??[]).some(n=>ei(this.pose,n)||ei(t,n))||(this.setup.targets??[]).some(n=>ei(this.pose,n))}apply(e){switch(e.method){case"forward":return this.wheels=[0,0],this.drive(e.args[0]);case"backward":return this.wheels=[0,0],this.drive(-e.args[0]);case"turnRight":return this.wheels=[0,0],this.turn(e.args[0]);case"turnLeft":return this.wheels=[0,0],this.turn(-e.args[0]);case"stop":this.wheels=[0,0];return;case"drive":this.wheels=[tm(e.args[0]),tm(e.args[1])];return;case"pause":return this.tick(e.args[0]);case"resetTimer":this.timerStart=this.time;return;case"setLed":this.leds=pa().map(()=>em(e.args));return;case"ledOff":this.leds=pa();return;case"ledColor":this.leds[e.args[0]]=em(ps[e.text??""]??[0,0,0]);return;case"showText":this.screen=e.text;return}}tick(e){if(e<=0)return;this.time+=e;const[t,n]=this.wheels.map(o=>o/100*Lx);if(t===0&&n===0)return;const a=Math.ceil(e/10),s=e/1e3/a;let r=!1;for(let o=0;o{const r={x:this.pose.x+e.x*p1+t.x*a,y:this.pose.y+e.y*p1+t.y*a};([...this.setup.marks??[],...this.setup.goals??[]].some(l=>ei(r,l))||this.setup.lines.some(l=>Nx(r,l)<=Zx/2))&&(n|=1<<3-s)}),n}colorUnder(){var n;const e=f1(this.pose.heading),t={x:this.pose.x+e.x*p1,y:this.pose.y+e.y*p1};return(n=(this.setup.colors??[]).find(a=>ei(t,a.at)))==null?void 0:n.color}sensors(){const e=this.lineState();return{getDistance:this.distance(),getLine:e,getColor:this.colorUnder()??(e&6?"black":"white"),isLineLeft:(e&4)!==0,isLineRight:(e&2)!==0,getTimer:this.timer}}freeDistance(e,t){let n=1/0;for(const a of this.allWalls){const s=Ex(e,t,a.from,a.to);s!==void 0&&sMath.max(-100,Math.min(100,i));function nm(i){const e=(i%360+360)%360;return Math.abs(e-360)<1e-9?0:e}function Ex(i,e,t,n){const a={x:n.x-t.x,y:n.y-t.y},s=e.x*a.y-e.y*a.x;if(Math.abs(s)<1e-12)return;const r={x:t.x-i.x,y:t.y-i.y},o=(r.x*a.y-r.y*a.x)/s,l=(r.x*e.y-r.y*e.x)/s;return o>=0&&l>=0&&l<=1?o:void 0}function Nx(i,e){let t=1/0;for(let n=0;n+10&&o.tick(z0),s.robotSensors={...o.sensors(),...Vx(a,u)};const c=()=>({outputs:[...m.outputLines],files:new Map(m.files),drive:m.robotActions.length?bs(m.robotActions):void 0,...n?{atGoal:o.atGoal(),bumps:o.bumps}:{},led:o.leds.some(d=>d!==void 0),tone:m.robotActions.some(d=>d.method==="playTone"),screen:o.screen,actions:Lh(m.robotActions.filter(d=>!Gx.has(d.method)))});if(m.inputRequest){const d=r.shift();if(d===void 0)return{...c(),missingInput:!0};if(s.provideInput(d),m.inputErrorNotice)return{...c(),error:m.inputErrorNotice};continue}if(m.isHalted)return{...c(),error:m.notice};if(!s.canStep)return{...c(),unusedInputs:r.length||void 0};s.step()}return{outputs:[...s.state.outputLines],files:new Map(s.state.files),drive:bs(s.state.robotActions),tooManySteps:!0}}function Vx(i,e){const t=Math.floor(e/Rx);return Object.fromEntries(Object.entries(i??{}).map(([n,a])=>[n,a[Math.min(t,a.length-1)]]))}function pg(i){return i===void 0||i===""?[]:i.replace(/\n$/,"").split(` `)}function fa(i,e){return i.length!==e.length?!1:i.every((t,n)=>im(t)===im(e[n]))}function qx(i,e){const t=n=>n.join("").replace(/\s+/g,"");return i.length>0&&i.length{var d,h,g;const s=a.world?n==null?void 0:n(a.world):void 0;if(a.world&&!s)throw new Error(`Weltkarte „${a.world}“ fehlt.`);const r=Hx(i,a.inputs,t,s,a.sensors),o=(a.files??[]).every(f=>{var b;return fa(pg((b=r.files)==null?void 0:b.get(f.name)),f.lines)}),l=!a.drive||fa(r.drive??[],a.drive),u=!a.world||r.bumps===0&&(!((d=s==null?void 0:s.goals)!=null&&d.length||(h=s==null?void 0:s.targets)!=null&&h.length)||r.atGoal===!0),m=(a.led===void 0||r.led===a.led)&&(a.tone===void 0||r.tone===a.tone)&&(a.screen===void 0||r.screen===a.screen)&&(a.drives===void 0||(((g=r.drive)==null?void 0:g.length)??0)>0===a.drives)&&(!a.actions||fa(r.actions??[],a.actions)),c=!r.error&&!r.missingInput&&!r.tooManySteps&&fa(r.outputs,a.expected)&&o&&l&&u&&m;return{test:a,result:r,passed:c}})}function Ux(i){const e=new Set,t=n=>{for(const a of n){e.add(a.type),a.loopBody&&t(a.loopBody);for(const s of a.cases??[])t(s.elements)}};return t(i.elements),e}function Yo(i){const e=[T.forSchleife,T.whileSchleife,T.doUntilSchleife,T.endlosschleife];let t=0;for(const n of i){const a=Math.max(Yo(n.loopBody??[]),...(n.cases??[]).map(s=>Yo(s.elements)));t=Math.max(t,a+(e.includes(n.type)?1:0))}return t}class Zi extends Error{}function Yx(i,e){const t=[],n=[];for(const a of i){const s=a.trim();if(!s)continue;if(s.startsWith("?")){const o=s.slice(1).trim();js(o,$x(t)),n.push(o);continue}const r=/^([A-Za-z_]\w*)\s*:\s*(?:(-?\d+)\s*\.\.\s*(-?\d+)|(boolean))$/.exec(s);if(!r)throw new Zi(`${e}: Unbekannte Zeile im Spiel: „${s}“`);t.push(r[4]?{name:r[1],kind:"boolean"}:{name:r[1],kind:"int",min:Number(r[2]),max:Number(r[3])})}if(!n.length)throw new Zi(`${e}: Das Spiel braucht mindestens eine Zeile „? bedingung“.`);return{vars:t,conditions:n}}function $x(i){return Object.fromEntries(i.map(e=>[e.name,e.kind==="boolean"?!0:e.min]))}function Kx(i){const e=[],t=/\s*(?:(\d+)|(true|false)\b|([A-Za-z_]\w*)|(&&|\|\||==|!=|<=|>=|<|>|!|\(|\)))/y;let n=0;for(;nt[n],s=d=>{var h;return((h=a())==null?void 0:h.kind)==="op"&&a().value===d},r=()=>{throw new Zi(`Bedingung nicht lesbar: „${i}“`)},o=()=>{const d=t[n++]??r();if(d.kind==="num"||d.kind==="bool")return d.value;if(d.kind==="name"){if(!(d.value in e))throw new Zi(`Unbekannte Variable „${d.value}“ in „${i}“`);return e[d.value]}if(d.value==="("){const h=m();return s(")")||r(),n++,h}if(d.value==="!"){const h=o();return typeof h!="boolean"&&r(),!h}return r()},l=()=>{const d=o(),h=a();if((h==null?void 0:h.kind)==="op"&&["==","!=","<","<=",">",">="].includes(h.value)){n++;const g=o();switch(h.value){case"==":return d===g;case"!=":return d!==g}(typeof d!="number"||typeof g!="number")&&r();const[f,b]=[d,g];return h.value==="<"?f"?f>b:f>=b}return d},u=()=>{let d=l();for(;s("&&");){n++;const h=l();d=d&&h}return d},m=()=>{let d=u();for(;s("||");){n++;const h=u();d=d||h}return d},c=m();return n!==t.length||typeof c!="boolean"?r():c}function Xx(i,e){const t=[i],n=i.replace(/\b[A-Za-z_]\w*\b/g,r=>r in e?String(e[r]):r);n!==i&&t.push(n);const a=n.replace(/(-?\d+|true|false)\s*(==|!=|<=|>=|<|>)\s*(-?\d+|true|false)/g,r=>String(js(r,{})));a!==t[t.length-1]&&t.push(a);const s=String(js(i,e));return s!==t[t.length-1]&&t.push(s),t}function e4(i,e){const t=[],n=new RegExp(`\\b${e}\\s*(?:==|!=|<=|>=|<|>)\\s*(-?\\d+)|(-?\\d+)\\s*(?:==|!=|<=|>=|<|>)\\s*${e}\\b`,"g");for(const a of i.matchAll(n)){const s=Number(a[1]??a[2]);t.push(s-1,s,s+1)}return t}function t4(i,e,t,n=Math.random){const a=i.conditions.length,s=Math.floor(e*a/t),r=Math.min(a-1,s+(n()<.5?0:1)),o=i.conditions[r],l={};for(const u of i.vars){if(u.kind==="boolean"){l[u.name]=n()<.5;continue}const m=e4(o,u.name).filter(c=>c>=u.min&&c<=u.max);l[u.name]=m.length&&n()<.6?m[Math.floor(n()*m.length)]:u.min+Math.floor(n()*(u.max-u.min+1))}return{condition:o,values:l,answer:js(o,l)}}function n4(i){return Object.entries(i.values).filter(([e])=>new RegExp(`\\b${e}\\b`).test(i.condition))}const i4=`--- titel: Was ist ein Struktogramm? @@ -8665,7 +8665,7 @@ Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀ = Datensatz -> eine Zeile mit Werten = Trennzeichen -> trennt die Spalten, meist ; ::: -`,C4=`--- +`,A4=`--- titel: Daten als JSON bereich: Dateien kurz: JSON-Dateien verstehen, Werte mit indexOf und substring herausholen und selbst JSON schreiben. @@ -8890,7 +8890,7 @@ Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀ = [ ] -> eine Liste = : -> trennt Schlüssel und Wert ::: -`,A4=`--- +`,C4=`--- titel: Formate im Vergleich bereich: Dateien kurz: Dieselben Daten als txt, CSV und JSON vergleichen, das passende Format wählen und eine Datei in ein anderes Format umwandeln. @@ -9065,7 +9065,7 @@ Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀ = die Notenliste der Klasse -> CSV = ein Spielstand mit Listen -> JSON ::: -`,P4=`--- +`,D4=`--- titel: Dein erstes Fenster bereich: Fenster mit Swing kurz: Mit Java und Swing ein eigenes Fenster öffnen, Zeile für Zeile erklärt. @@ -9287,7 +9287,7 @@ Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀ - [ ] Sie stehen in geschweiften Klammern. - [ ] Sie enden mit Window. ::: -`,D4=`--- +`,P4=`--- titel: Ein Knopf im Fenster bereich: Fenster mit Swing kurz: Einen Knopf ins Fenster legen und mit einem Layout ordentlich anordnen. @@ -12833,6 +12833,13 @@ Eine Variable, die in einer Schleife mitzählt, meistens i. auch: Endlosschleifen Eine Schleife, deren Bedingung nie falsch wird. Sie hört nie von selbst auf. +### Merker +Eine Variable vom Typ boolean, die mit false anfängt und auf true gesetzt wird, sobald etwas passiert ist. + +### Zustandsautomat +auch: Zustandsautomaten, Zustandsvariable, Zustandsvariablen +Ein Programm, das immer in genau einem Zustand ist und nach festen Regeln in den nächsten Zustand wechselt, z. B. eine Ampel. + ### Array auch: Arrays Eine Reihe von Fächern mit einem gemeinsamen Namen und demselben Datentyp. Im Lehrplan heißt es auch Feld. @@ -24287,7 +24294,7 @@ Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can - [x] 7 > Each guess halves the range, and 2 to the power of 7 = 128 is bigger than 100. ::: -`,Cv=`--- +`,Av=`--- titel: Many buttons, one listener bereich: Windows with Swing kurz: One listener for many buttons, and finding out with getActionCommand and getSource which button was clicked. @@ -24597,7 +24604,7 @@ Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can = ActionEvent -> the event e with the information about the click = JPanel -> an area with its own layout ::: -`,Av=`--- +`,Cv=`--- titel: Inner classes bereich: Windows with Swing kurz: Write a listener as a named inner class, as an anonymous class and as a lambda, and know who can see what. @@ -24835,7 +24842,7 @@ Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can = new ActionListener() { … } -> anonymous class = the arrow after e -> lambda ::: -`,Pv=`--- +`,Dv=`--- titel: Two tabs bereich: Windows with Swing kurz: Build a window with two tabs, bring data from one tab to the other and save the list as a text file. @@ -25122,7 +25129,7 @@ Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can = JPanel -> the area of a tab = JTextArea -> a text area with several lines ::: -`,Dv=`--- +`,Pv=`--- titel: Model View Controller bereich: Windows with Swing kurz: Split the click counter into model, view and controller and understand who talks to whom. @@ -25666,6 +25673,14 @@ A variable that counts along in a loop, usually i. also: endless loop, endless loops, infinite loop, infinite loops A loop whose condition never becomes false. It never stops by itself. +### Flag +also: flag, flags +A boolean variable that starts with false and is set to true as soon as something has happened. + +### State machine +also: state machine, state machines, state variable, state variables +A program that is always in exactly one state and changes to the next state by fixed rules, e.g. a traffic light. + ### Array also: array, arrays, Arrays A row of slots with one shared name and the same data type. @@ -39075,7 +39090,7 @@ lösung: aufgabe-caesar-entschluesseln-loesung.visustruct ::: angeberwissen Sicher ist Caesar leider nicht. Es gibt nur 25 Schlüssel, die kann man in ein paar Minuten alle ausprobieren. Noch schneller geht es mit einem Trick: Im Deutschen ist E der häufigste Buchstabe. Kommt im Geheimtext H am häufigsten vor, war der Schlüssel wohl 3. Im Internet gibt es übrigens ROT13, das ist Caesar mit dem Schlüssel 13. Zweimal ROT13 ergibt wieder den Klartext, weil 13 + 13 = 26. ::: -`,Cy=`--- +`,Ay=`--- titel: Collatz-Folge nach: 11 stufe: 2 @@ -39119,7 +39134,7 @@ lösung: aufgabe-collatz-loesung.visustruct ::: angeberwissen Mit dieser Aufgabe kann man reich werden! Der Mathematiker Paul Erdős setzte für einen Beweis 500 Dollar aus. 2021 legte die japanische Firma Bakuage noch einiges drauf: 120 Millionen Yen, damals umgerechnet rund eine Million Dollar, für einen Beweis oder ein Gegenbeispiel. Abgeholt hat das Geld bis heute niemand. Erfunden hat das Rätsel übrigens der deutsche Mathematiker Lothar Collatz im Jahr 1937. Ich rechne gleich mal los, für so viel Geld gibt es eine Menge Heu. ::: -`,Ay=`--- +`,Cy=`--- titel: Einheitenrechner nach: 35 stufe: 2 @@ -39174,7 +39189,7 @@ Zusatz: Ein vierter Knopf **in Fuß** rechnet in die englische Einheit um. Ein F ::: ludwig Tick im [Zahnrad](#zeige-einstellungen) **Echtes Java (mit Swing)** an. Für „abc“ im Feld brauchst du in jedem Zuhörer ein try/catch mit \`NumberFormatException\`, wie beim Taschenrechner. ::: -`,Py=`--- +`,Dy=`--- titel: Fibonacci-Zahlen nach: 13 stufe: 2 @@ -39228,7 +39243,7 @@ lösung: aufgabe-fibonacci-loesung.visustruct - [ ] Die Reihenfolge ist egal > Andersherum hätten zahl1 und zahl2 danach denselben Wert. Wie beim Tauschen gilt: Erst retten, dann überschreiben. ::: -`,Dy=`--- +`,Py=`--- titel: Gerade oder ungerade nach: 8 stufe: 1 @@ -41257,7 +41272,7 @@ tipp: Precisas de três variáveis: duas para os números e uma para o resultado tipp: Defines uma variável com uma instrução como \`int numero1 = 4\`. Na saída escreves o nome da variável sem aspas. lösung: aufgabe-summe-loesung.visustruct ::: -`,Cw=`--- +`,Aw=`--- titel: Sortear quem limpa o quadro nach: 15 stufe: 2 @@ -41294,7 +41309,7 @@ lösung: aufgabe-tafeldienst-loesung.visustruct ::: > Com \`int sorteado = (int) (Math.random() * 5) + 1\` também podes deixar o acaso sortear o número. Mas para a verificação automática precisamos de uma entrada fixa. -`,Aw=`--- +`,Cw=`--- titel: Calculadora nach: 10 stufe: 2 @@ -41330,7 +41345,7 @@ tipp: O operador é um texto. Lês com \`String operador = scanner.next();\`. tipp: \`switch (operador) { case "+" -> { … } … default -> { … } }\`. Com textos, os casos ficam entre aspas. lösung: aufgabe-rechner-loesung.visustruct ::: -`,Pw=`--- +`,Dw=`--- titel: Menu de aluguer nach: 18 stufe: 2 @@ -41365,7 +41380,7 @@ tipp: \`while (true) { … }\` corre sem fim até aparecer um \`break;\`. tipp: Em Java usa aqui \`if\`/\`else if\` em vez de \`switch\`: um \`break;\` dentro de um \`switch\` só sai do \`switch\`, não do ciclo. \`if (escolha == 0) { System.out.println("Adeus"); break; } else if (escolha == 1) { … }\`. lösung: aufgabe-verleih-java-loesung.visustruct ::: -`,Dw=`--- +`,Pw=`--- titel: Treino de vocabulário nach: 27 stufe: 3 @@ -43515,6 +43530,160 @@ Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀ > \`} while (Bedingung);\` endet mit einem Semikolon. ::: `,Gw=`--- +titel: Zählen und Summieren +bereich: Sensoren und Entscheidungen +kurz: Mit einer Variablen mitzählen und Werte zusammenzählen. +--- + +## Diese Kompetenzen erwerbe ich jetzt + +::: kompetenzen +- eine Zählvariable anlegen und in einer Schleife hochzählen +- in einer Schleife eine Summe bilden +- das Ergebnis nach der Schleife auf dem Bildschirm zeigen +::: + +## Mitzählen + +Wie viele Schritte fährt der mBot2 bis zur Wand? Das weißt du vorher nicht, die Welt ist jedes Mal anders. Der mBot2 soll deshalb **mitzählen**. Dafür brauchst du drei Kästen: + +1. **Vor** der Schleife: \`int schritte = 0\`. Am Anfang ist noch nichts gezählt. +2. **In** der Schleife: \`schritte = schritte + 1\`. Nach jedem Schritt eins mehr. +3. **Nach** der Schleife: das Ergebnis zeigen, zum Beispiel mit \`mbot.showText("Schritte: " + schritte)\`. + +Lies \`schritte = schritte + 1\` von rechts nach links: Nimm den alten Wert von \`schritte\`, zähle 1 dazu und speichere das Ergebnis wieder in \`schritte\`. So eine Variable heißt **Zählvariable** oder kurz Zähler. + +> Achtung: Steht \`int schritte = 0\` **in** der Schleife, fängt der Zähler bei jedem Durchgang wieder bei 0 an. Am Ende steht dann immer 1 da. + +::: angeberwissen +Dein Handy zählt deine Schritte genau so: Bei jedem Schritt rechnet es \`schritte = schritte + 1\`. Ich zähle lieber meine Grashalme. Ich bin bei 4 Millionen. +::: + +::: übung vb-schritte-welt +titel: Schritte bis zur Wand +auftrag: Baue ein Struktogramm: Der mBot2 fährt vor, solange der Abstand größer als 15 ist. Dabei zählt er seine Schritte mit. Danach zeigt er zum Beispiel **Schritte: 3** auf dem Bildschirm. Es gibt drei Welten. +welt: wand-kurz -> screen "Schritte: 3" +welt: wand-mittel -> screen "Schritte: 7" +welt: wand-lang -> screen "Schritte: 12" +braucht: whileSchleife +tipp: Der erste Kasten ist \`int schritte = 0\`. Danach kommt die While-Schleife mit \`mbot.getDistance() > 15\`. +tipp: In der Schleife stehen **fahre vor** und \`schritte = schritte + 1\`. Nach der Schleife steht \`mbot.showText("Schritte: " + schritte)\`. +lösung: vb-schritte-welt-loesung.visustruct +::: + +## Zusammenzählen + +Ein Zähler wächst immer um 1. Eine **Summe** wächst um verschiedene Werte. Der mBot2 fährt eine Spirale: erst 10 cm, dann 20, dann 30, dann 40. Wie weit ist er insgesamt gefahren? + +| Durchgang | \`seite\` | \`gesamt\` danach | +|---|---|---| +| vorher | 10 | 0 | +| 1 | 10 | 0 + 10 = 10 | +| 2 | 20 | 10 + 20 = 30 | +| 3 | 30 | 30 + 30 = 60 | +| 4 | 40 | 60 + 40 = 100 | + +Das Muster ist dasselbe wie beim Zählen. Nur steht statt der 1 jetzt der Wert, der dazukommt: \`gesamt = gesamt + seite\`. + +## Jetzt in Java: Spirale mit Strecke + +::: übung vb-java-spirale-strecke +titel: Spirale mit Strecke +code: java +auftrag: Schreibe in Java: Lege \`int seite = 10\` und \`int gesamt = 0\` an. Fahre viermal: \`seite\` cm vor, rechts drehen, \`seite\` zu \`gesamt\` dazuzählen, \`seite\` um 10 größer machen. Zeige danach **Strecke: 100 cm** auf dem Bildschirm. +fahrt: forward 10, turnRight, forward 20, turnRight, forward 30, turnRight, forward 40, turnRight +befehle: showText "Strecke: 100 cm" +braucht: forSchleife +tipp: In der For-Schleife stehen vier Zeilen: \`mbot.forward(seite);\`, \`mbot.turnRight();\`, \`gesamt = gesamt + seite;\` und \`seite = seite + 10;\`. +tipp: Nach der Schleife steht \`mbot.showText("Strecke: " + gesamt + " cm");\`. +lösung: vb-java-spirale-strecke-loesung.visustruct +::: + +::: übung vb-fehler-05-zaehlen-und-summieren +titel: Warum läuft das nicht? +code: java +auftrag: Ludwig hat „Spirale mit Strecke“ abgetippt, aber das Programm läuft nicht. „Im Editor öffnen“ zeigt den Code im Bereich Code. Klicke auf „Ausführen“ und lies die Fehlermeldung. Repariere den Fehler und klicke auf Prüfen. +start: vb-fehler-05-zaehlen-und-summieren-start.visustruct +fahrt: forward 10, turnRight, forward 20, turnRight, forward 30, turnRight, forward 40, turnRight +befehle: showText "Strecke: 100 cm" +tipp: Die Fehlermeldung nennt eine unbekannte Variable. Wie heißt die Variable dort, wo sie angelegt wird? Java unterscheidet Groß- und Kleinschreibung. +tipp: Richtig heißt es \`gesamt = gesamt + seite\`. +lösung: vb-java-spirale-strecke-loesung.visustruct +::: + +## Spiel: Was steht am Ende in der Variablen? + +::: spiel frage +titel: Spiel: Was steht am Ende in der Variablen? +intro: Ludwig hat kleine Programme geschrieben. Rechne im Kopf mit. Fünf Runden. + +runde: +frage: \`int z = 0\`, dann dreimal \`z = z + 1\`. Was ist \`z\`? +- 1 +- [x] 3 +- 0 +> Jeder Durchgang zählt 1 dazu: 1, 2, 3. + +runde: +frage: \`int summe = 0\`, dann \`summe = summe + 5\` und \`summe = summe + 7\`. Was ist \`summe\`? +- 7 +- [x] 12 +- 5 +> 0 + 5 = 5, dann 5 + 7 = 12. + +runde: +frage: Eine Schleife läuft viermal. In ihr stehen \`int z = 0\` und \`z = z + 1\`. Was ist \`z\` am Ende? +- 4 +- [x] 1 +- 0 +> Der Zähler wird in jedem Durchgang wieder auf 0 gesetzt. Er gehört vor die Schleife. + +runde: +frage: \`int gesamt = 0\`. Der mBot2 fährt 20, 20 und 30 cm und zählt jedes Mal dazu. Was ist \`gesamt\`? +- 30 +- 20 +- [x] 70 +> 20 + 20 + 30 = 70. + +runde: +frage: \`int schritte = 10\`, dann zweimal \`schritte = schritte + 1\`. Was ist \`schritte\`? +- 2 +- [x] 12 +- 11 +> Der Zähler fängt hier bei 10 an, nicht bei 0. +::: + +## Checkliste + +Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀️ kann ich sicher. Bei ⛅ und ☂️ hilft dir **Nachlesen**. Danach kommt der Wissenstest. Er zeigt dir, ob deine Einschätzung stimmt. + +::: checkliste +- Ich kann eine Zählvariable anlegen und in einer Schleife hochzählen. → Mitzählen +- Ich kann in einer Schleife eine Summe bilden. → Zusammenzählen +- Ich kann das Ergebnis nach der Schleife auf dem Bildschirm zeigen. → Jetzt in Java: Spirale mit Strecke +::: + +## Wissenstest + +::: quiz +? Wo legst du die Zählvariable \`int schritte = 0\` an? +→ Mitzählen +- [x] Vor der Schleife +- [ ] In der Schleife +- [ ] Nach der Schleife +> In der Schleife würde sie bei jedem Durchgang wieder 0. +? Was macht \`schritte = schritte + 1\`? +→ Mitzählen +- [ ] Es vergleicht schritte mit schritte + 1. +- [x] Es nimmt den alten Wert, zählt 1 dazu und speichert das Ergebnis. +- [ ] Es setzt schritte auf 1. +? Wie zählst du die Seitenlänge \`seite\` zur Summe \`gesamt\` dazu? +→ Zusammenzählen +- [ ] \`gesamt = seite\` +- [ ] \`seite = gesamt + seite\` +- [x] \`gesamt = gesamt + seite\` +::: +`,Hw=`--- titel: Der Ultraschallsensor bereich: Sensoren und Entscheidungen kurz: Abstand messen, Abstand halten und das Ganze in Java. @@ -43702,7 +43871,347 @@ Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀ - [ ] \`otherwise\` > \`if\` ist der Anfang, \`else\` der false-Zweig. ::: -`,Hw=`--- +`,Vw=`--- +titel: Feste Werte mit final +bereich: Sensoren und Entscheidungen +kurz: Eine Konstante anlegen, damit eine wichtige Zahl nur an einer Stelle steht. +--- + +## Diese Kompetenzen erwerbe ich jetzt + +::: kompetenzen +- erklären, was eine Konstante ist +- eine Konstante im Struktogramm und in Java anlegen +- eine Konstante in einer Bedingung und in einem Befehl benutzen +::: + +## Eine Zahl an vielen Stellen + +Ludwig hat ein Programm für den Flur geschrieben: Der mBot2 fährt bis 20 cm vor die Wand, dreht sich um und fährt bis 20 cm vor die andere Wand. + +::: diagramm vb-l06k-ohne.visustruct +Hin und zurück. Die Zahl 20 steht an zwei Stellen. +::: + +Jetzt soll der mBot2 schon bei 30 cm anhalten. Ludwig muss jede 20 suchen und ändern. Vergisst er eine, hält der mBot2 einmal bei 30 und einmal bei 20 cm. In langen Programmen passiert so etwas schnell. + +::: angeberwissen +Profis nennen eine Zahl, die einfach so im Programm steht, eine **magische Zahl**. Magisch, weil niemand mehr weiß, was sie bedeutet. Ich mag nur magische Grashalme. +::: + +## Eine Konstante anlegen + +Besser ist eine **Konstante**. Das ist eine Variable, deren Wert nach dem Festlegen gleich bleibt. Du legst sie einmal ganz oben an und benutzt danach nur noch ihren Namen. + +| | Struktogramm | Java | +|---|---|---| +| anlegen | \`const int ABSTAND = 20\` | \`final int ABSTAND = 20;\` | +| benutzen | \`mbot.getDistance() > ABSTAND\` | \`mbot.getDistance() > ABSTAND\` | + +Im Struktogramm schreibst du \`const\` davor, in Java \`final\`. Beides heißt: Dieser Wert ändert sich nicht mehr. Namen von Konstanten schreibt man in **Großbuchstaben**, dann erkennt man sie sofort. + +::: diagramm vb-l06k-mit.visustruct +Dasselbe Programm mit der Konstanten ABSTAND. Für 30 cm änderst du nur die erste Zeile. +::: + +::: übung vb-konstante-wand +titel: Wand mit Konstante +auftrag: Lege die Konstante \`ABSTAND\` mit dem Wert 20 an. Der mBot2 fährt vor, solange der Abstand größer als \`ABSTAND\` ist. Danach spielt er einen Ton. Es gibt drei Welten. +welt: wand-kurz -> tone +welt: wand-mittel -> tone +welt: wand-lang -> tone +braucht: whileSchleife +tipp: Der erste Kasten ist eine Anweisung mit \`const int ABSTAND = 20\`. Darunter kommt eine While-Schleife. +tipp: Die Bedingung der Schleife ist \`mbot.getDistance() > ABSTAND\`. In der Schleife steht **fahre vor**, nach der Schleife **spiele Ton**. +lösung: vb-konstante-wand-loesung.visustruct +::: + +## Jetzt in Java: Quadrat mit Konstante + +Eine Konstante passt auch in einen Befehl. Mit \`final int SEITE = 30;\` fährt \`mbot.forward(SEITE);\` genau 30 cm. Soll das Quadrat größer werden, änderst du nur die eine Zeile. + +::: übung vb-java-konstante-seite +titel: Quadrat mit Konstante +code: java +auftrag: Schreibe in Java: Lege die Konstante \`SEITE\` mit dem Wert 30 an. Fahre dann mit einer For-Schleife ein Quadrat mit der Seitenlänge \`SEITE\`. +fahrt: 4 x (forward 30, turnRight) +braucht: forSchleife +tipp: Die erste Zeile ist \`final int SEITE = 30;\`. Danach kommt \`for (int i = 0; i < 4; i++) { … }\`. +tipp: In der Schleife stehen \`mbot.forward(SEITE);\` und \`mbot.turnRight();\`. +lösung: vb-java-konstante-seite-loesung.visustruct +::: + +::: übung vb-fehler-06-konstanten-final +titel: Warum läuft das nicht? +code: java +auftrag: Ludwig hat „Quadrat mit Konstante“ abgetippt, aber das Programm läuft nicht. „Im Editor öffnen“ zeigt den Code im Bereich Code. Klicke auf „Ausführen“ und lies die Fehlermeldung. Repariere den Fehler und klicke auf Prüfen. +start: vb-fehler-06-konstanten-final-start.visustruct +fahrt: 4 x (forward 30, turnRight) +tipp: Die Fehlermeldung nennt eine unbekannte Variable. Wie heißt die Konstante dort, wo sie angelegt wird? Konstanten schreibt man in Großbuchstaben. +tipp: Richtig heißt es \`mbot.forward(SEITE)\`. +lösung: vb-java-konstante-seite-loesung.visustruct +::: + +## Spiel: Konstante oder Variable? + +::: spiel frage +titel: Spiel: Konstante oder Variable? +intro: Ludwig sortiert Werte. Bleibt der Wert im ganzen Programm gleich, ist er eine Konstante. Ändert er sich, ist er eine Variable. Sechs Runden. +frage: Konstante oder Variable? +antworten: Konstante | Variable + +runde: +frage: Die Anzahl der Ecken eines Quadrats +richtig: Konstante +> Ein Quadrat hat immer vier Ecken. + +runde: +frage: Der Abstand, den der Ultraschallsensor gerade misst +richtig: Variable +> Fährt der mBot2, ändert sich der Abstand ständig. + +runde: +frage: Der Mindestabstand, bei dem der mBot2 immer anhalten soll +richtig: Konstante +> Du legst ihn einmal fest, zum Beispiel \`final int ABSTAND = 20;\`. + +runde: +frage: Die Zahl der Schritte, die der mBot2 schon gefahren ist +richtig: Variable +> Nach jedem Schritt wird sie um 1 größer. + +runde: +frage: Die Tonhöhe des Warntons, immer 440 Hz +richtig: Konstante +> Der Warnton klingt immer gleich. + +runde: +frage: Der Akkustand in Prozent +richtig: Variable +> Der Akku wird beim Fahren langsam leer. +::: + +## Checkliste + +Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀️ kann ich sicher. Bei ⛅ und ☂️ hilft dir **Nachlesen**. Danach kommt der Wissenstest. Er zeigt dir, ob deine Einschätzung stimmt. + +::: checkliste +- Ich kann erklären, was eine Konstante ist. → Eine Konstante anlegen +- Ich kann eine Konstante im Struktogramm und in Java anlegen. → Eine Konstante anlegen +- Ich kann eine Konstante in einer Bedingung und in einem Befehl benutzen. → Jetzt in Java: Quadrat mit Konstante +::: + +## Wissenstest + +::: quiz +? Was ist eine Konstante? +→ Eine Konstante anlegen +- [ ] Eine Variable, die sich in jedem Durchgang ändert +- [x] Eine Variable, deren Wert nach dem Festlegen gleich bleibt +- [ ] Ein Sensor, der immer denselben Wert misst +> Eine Konstante legst du einmal fest. Danach benutzt du nur ihren Namen. +? Wie legst du in Java die Konstante \`ABSTAND\` mit dem Wert 20 an? +→ Eine Konstante anlegen +- [ ] \`const ABSTAND = 20;\` +- [x] \`final int ABSTAND = 20;\` +- [ ] \`int final = 20;\` +> In Java steht \`final\` vor dem Datentyp. Im Struktogramm schreibst du \`const\`. +? Warum ist eine Konstante besser als die Zahl 20 an vielen Stellen? +→ Eine Konstante anlegen +- [ ] Weil das Programm dann schneller fährt +- [x] Weil du den Wert nur an einer Stelle ändern musst +- [ ] Weil der Sensor dann genauer misst +::: +`,qw=`--- +titel: Nah, mittel oder weit? +bereich: Sensoren und Entscheidungen +kurz: Eine Verzweigung mit drei Fällen bauen und in Java mit else if schreiben. +--- + +## Diese Kompetenzen erwerbe ich jetzt + +::: kompetenzen +- eine Verzweigung mit drei Fällen bauen +- \`else if\` in Java lesen und schreiben +- die Bedingungen in der richtigen Reihenfolge prüfen +::: + +## Drei Fälle statt zwei + +Viele Autos haben eine **Einparkhilfe**. Ist die Wand weit weg, ist alles frei. Kommt sie näher, heißt es: langsam. Ist sie ganz nah: Stopp! + +Eine Verzweigung hat nur zwei Zweige, Ja und Nein. Für drei Fälle setzt du eine zweite Verzweigung in den Nein-Zweig der ersten: + +1. Ist der Abstand kleiner als 10? Dann **Stopp**. +2. Sonst: Ist der Abstand kleiner als 30? Dann **Langsam**. +3. Sonst: **Frei**. + +::: diagramm vb-l06n-einparkhilfe.visustruct +Die Einparkhilfe. Die zweite Frage wird nur gestellt, wenn die Antwort auf die erste Nein war. +::: + +Probiere es in der [Simulation](#zeige-simulation) aus: Öffne das Diagramm im Editor und stelle den Abstand auf 5, 20 und 50 cm. + +> 📘 **Mehr dazu ohne Roboter:** In VisuStruct gibt es die Lektion [„Verzweigung“](?visustruct&lektion=08-verzweigung). Sie öffnet sich in einem neuen Fenster. + +## Tempo nach Abstand im Struktogramm + +::: übung vb-tempo-abstand +titel: Tempo nach Abstand +auftrag: Baue ein Struktogramm mit drei Fällen: Ist der Abstand kleiner als 10, fährt der mBot2 5 cm zurück. Sonst: Ist der Abstand kleiner als 30, fährt er 5 cm vor. Sonst fährt er 20 cm vor. +messwerte: getDistance=5 -> backward 5 +messwerte: getDistance=20 -> forward 5 +messwerte: getDistance=50 -> forward 20 +braucht: verzweigung +tipp: Baue es wie die Einparkhilfe: eine Verzweigung mit \`mbot.getDistance() < 10\` und im Nein-Zweig eine zweite mit \`mbot.getDistance() < 30\`. +tipp: Die Befehle sind \`mbot.backward(5)\`, \`mbot.forward(5)\` und \`mbot.forward(20)\`. Der letzte steht im Nein-Zweig der zweiten Verzweigung. +lösung: vb-tempo-abstand-loesung.visustruct +::: + +> Beim Prüfen setzt VisuStruct den Abstand nacheinander auf 5, 20 und 50 cm. + +## Jetzt in Java: else if + +Schau in den Bereich [Code](#zeige-codelive). Die Verzweigung im Nein-Zweig sieht so aus: + +\`\`\`java +if (mbot.getDistance() < 10) { + mbot.showText("Stopp"); +} else { + if (mbot.getDistance() < 30) { + mbot.showText("Langsam"); + } else { + mbot.showText("Frei"); + } +} +\`\`\` + +In Java darfst du das kürzer schreiben. Das \`if\` rutscht direkt hinter das \`else\`: + +\`\`\`java +if (mbot.getDistance() < 10) { + mbot.showText("Stopp"); +} else if (mbot.getDistance() < 30) { + mbot.showText("Langsam"); +} else { + mbot.showText("Frei"); +} +\`\`\` + +Beides bedeutet genau dasselbe. Mit \`else if\` ist es aber besser zu lesen. Die geschweiften Klammern \`{ }\` schreibst du trotzdem immer. + +::: übung vb-java-tageszeit +titel: Tag oder Nacht? +code: java +auftrag: Schreibe in Java mit \`else if\`: Ist die Helligkeit kleiner als 20, zeigt der mBot2 **Nacht**. Sonst: Ist sie kleiner als 60, zeigt er **Dämmerung**. Sonst zeigt er **Tag**. +messwerte: getBrightness=10 -> none, screen "Nacht" +messwerte: getBrightness=40 -> none, screen "Dämmerung" +messwerte: getBrightness=80 -> none, screen "Tag" +braucht: verzweigung +tipp: Die Helligkeit liest du mit \`mbot.getBrightness()\`. Die erste Bedingung ist \`mbot.getBrightness() < 20\`. +tipp: \`if (…) { mbot.showText("Nacht"); } else if (mbot.getBrightness() < 60) { mbot.showText("Dämmerung"); } else { mbot.showText("Tag"); }\` +lösung: vb-java-tageszeit-loesung.visustruct +::: + +::: übung vb-fehler-06-nah-mittel-weit +titel: Warum läuft das nicht? +code: java +auftrag: Ludwig hat „Tag oder Nacht?“ abgetippt, aber das Programm läuft nicht. „Im Editor öffnen“ zeigt den Code im Bereich Code. Klicke auf „Ausführen“ und lies die Fehlermeldung. Repariere den Fehler und klicke auf Prüfen. +start: vb-fehler-06-nah-mittel-weit-start.visustruct +messwerte: getBrightness=10 -> none, screen "Nacht" +messwerte: getBrightness=40 -> none, screen "Dämmerung" +messwerte: getBrightness=80 -> none, screen "Tag" +tipp: Ein Text gehört in Anführungszeichen. Ohne sie sucht Java eine Variable mit diesem Namen. +tipp: Richtig heißt es \`mbot.showText("Nacht")\`. +lösung: vb-java-tageszeit-loesung.visustruct +::: + +## Auf die Reihenfolge kommt es an + +Ludwig hat die Einparkhilfe umgebaut und die Fragen getauscht: + +\`\`\`java +if (mbot.getDistance() < 30) { + mbot.showText("Langsam"); +} else if (mbot.getDistance() < 10) { + mbot.showText("Stopp"); +} +\`\`\` + +Bei 5 cm zeigt sein mBot2 **Langsam** statt **Stopp**. Denn 5 ist auch kleiner als 30. Die erste Bedingung ist schon wahr, die zweite wird gar nicht mehr geprüft. **Stopp** erscheint nie. + +> Merke: Bei \`<\` prüfst du zuerst den kleinsten Wert, dann den nächstgrößeren. + +::: spiel frage +titel: Spiel: Was zeigt die Einparkhilfe? +intro: Ludwigs Einparkhilfe von oben: unter 10 cm **Stopp**, unter 30 cm **Langsam**, sonst **Frei**. Was zeigt sie? Sechs Runden. +frage: Was zeigt die Einparkhilfe? +antworten: Stopp | Langsam | Frei + +runde: +frage: Der Abstand ist **5 cm**. +richtig: Stopp +> 5 ist kleiner als 10. Schon die erste Frage ist wahr. + +runde: +frage: Der Abstand ist **25 cm**. +richtig: Langsam +> 25 ist nicht kleiner als 10, aber kleiner als 30. + +runde: +frage: Der Abstand ist **80 cm**. +richtig: Frei +> Beide Fragen sind falsch, also bleibt der letzte Nein-Zweig. + +runde: +frage: Der Abstand ist genau **10 cm**. +richtig: Langsam +> 10 ist nicht kleiner als 10. Die erste Frage ist falsch, die zweite wahr. + +runde: +frage: Der Abstand ist genau **30 cm**. +richtig: Frei +> 30 ist nicht kleiner als 30. Beide Fragen sind falsch. + +runde: +frage: Der Abstand ist **9 cm**. +richtig: Stopp +> 9 ist kleiner als 10. +::: + +## Checkliste + +Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀️ kann ich sicher. Bei ⛅ und ☂️ hilft dir **Nachlesen**. Danach kommt der Wissenstest. Er zeigt dir, ob deine Einschätzung stimmt. + +::: checkliste +- Ich kann eine Verzweigung mit drei Fällen bauen. → Drei Fälle statt zwei +- Ich kann \`else if\` in Java lesen und schreiben. → Jetzt in Java: else if +- Ich kann die Bedingungen in der richtigen Reihenfolge prüfen. → Auf die Reihenfolge kommt es an +::: + +## Wissenstest + +::: quiz +? Wie viele Verzweigungen brauchst du im Struktogramm für drei Fälle? +→ Drei Fälle statt zwei +- [ ] Eine +- [x] Zwei, die zweite im Nein-Zweig der ersten +- [ ] Drei nebeneinander +> Jede Verzweigung teilt in zwei Zweige. Die zweite teilt den Nein-Zweig noch einmal. +? Was bedeutet \`else if\` in Java? +→ Jetzt in Java: else if +- [x] Sonst prüfe noch eine Bedingung +- [ ] Wiederhole die Bedingung +- [ ] Prüfe beide Bedingungen gleichzeitig +> \`else if\` ist die kurze Schreibweise für ein \`if\` im \`else\`-Zweig. +? Ludwig prüft zuerst \`< 30\` und danach \`< 10\`. Was passiert bei 5 cm? +→ Auf die Reihenfolge kommt es an +- [ ] Es erscheint Stopp. +- [x] Es erscheint Langsam. +- [ ] Es erscheint gar nichts. +> 5 ist auch kleiner als 30. Die zweite Bedingung wird nicht mehr geprüft. +::: +`,Qw=`--- titel: Der Liniensensor bereich: Sensoren und Entscheidungen kurz: Dunkle Linien auf dem Boden erkennen und nicht vom Tisch fallen. @@ -43959,7 +44468,7 @@ Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀ - [ ] \`mbot.getLine() < 0\` > \`!=\` heißt „ungleich“. ::: -`,Vw=`--- +`,Uw=`--- titel: Und, oder, nicht bereich: Sensoren und Entscheidungen kurz: Zwei Sensoren in einer Bedingung prüfen: und, oder, nicht. @@ -44216,7 +44725,7 @@ Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀ - [ ] \`while (mbot.getDistance() > 15)\` > Mit \`||\` würde er weiterfahren, solange nur einer der Teile stimmt, also zum Beispiel über den Rand hinaus. ::: -`,qw=`--- +`,Yw=`--- titel: Farben erkennen bereich: Sensoren und Entscheidungen kurz: Der Quad-RGB-Sensor sagt, auf welcher Farbe der mBot2 steht. @@ -44379,7 +44888,169 @@ Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀ - [ ] \`mbot.getColor() = "grün"\` > \`mbot.getColor()\` liefert einen Text, und Texte vergleicht man mit \`.equals(…)\`. Ein einzelnes \`=\` ist eine Zuweisung, gar kein Vergleich. ::: -`,Qw=`--- +`,$w=`--- +titel: Der größte Wert +bereich: Sensoren und Entscheidungen +kurz: Rundum messen und sich den größten Wert merken: Wo ist am meisten Platz? +--- + +## Diese Kompetenzen erwerbe ich jetzt + +::: kompetenzen +- mit einer Variablen den bisher größten Wert merken +- in einer Schleife jeden neuen Messwert mit dem bisher größten vergleichen +- mit dem mBot2 herausfinden, in welcher Richtung am meisten Platz ist +::: + +## Den Rekord merken + +Beim Weitsprung gibt es eine Tafel mit dem **Rekord**. Nach jedem Sprung schaut die Schiedsrichterin: Ist der neue Sprung weiter als der Rekord? Dann kommt er an die Tafel. Sonst bleibt der alte Rekord stehen. + +Genau so findet ein Programm den größten Wert. Die Tafel ist eine Variable \`max\`: + +1. **Vor** der Schleife: \`int max = 0\`. Noch steht nichts an der Tafel. +2. **In** der Schleife: Ist der neue Wert größer als \`max\`? Dann \`max = wert\`. +3. **Nach** der Schleife steht in \`max\` der größte Wert. + +Der mBot2 dreht sich viermal und misst jedes Mal den Abstand. So sieht das im Schreibtischtest aus: + +| Richtung | gemessen | größer als \`max\`? | \`max\` danach | +|---|---|---|---| +| vorher | | | 0 | +| vorn | 16 | ja | 16 | +| rechts | 36 | ja | 36 | +| hinten | 6 | nein | 36 | +| links | 26 | nein | 36 | + +> Wichtig: Die Verzweigung hat nur einen Ja-Zweig. Ist der Wert nicht größer, passiert nichts. Der alte Rekord bleibt. + +## Wo ist am meisten Platz? + +::: übung vb-meister-platz +titel: Wo ist am meisten Platz? +auftrag: Baue ein Struktogramm: Lege \`int max = 0\` an. Der mBot2 misst viermal den Abstand und dreht sich danach jeweils nach rechts. Ist ein Abstand größer als \`max\`, merkt er ihn sich in \`max\`. Zum Schluss zeigt er zum Beispiel **Am weitesten: 36 cm**. Es gibt zwei Welten. +welt: platz-1 -> screen "Am weitesten: 36 cm" +welt: platz-2 -> screen "Am weitesten: 46 cm" +braucht: forSchleife, verzweigung +tipp: Die For-Schleife läuft viermal. In ihr stehen drei Kästen: \`int abstand = mbot.getDistance()\`, eine Verzweigung und **drehe rechts**. +tipp: Die Verzweigung prüft \`abstand > max\`. Im Ja-Zweig steht \`max = abstand\`, der Nein-Zweig bleibt leer. Nach der Schleife: \`mbot.showText("Am weitesten: " + max + " cm")\`. +lösung: vb-meister-platz-loesung.visustruct +::: + +::: angeberwissen +Viele Saugroboter haben oben einen kleinen Turm mit einem Laser. Er dreht sich und misst ringsum die Abstände. So zeichnet der Roboter eine Karte der Wohnung. Bei mir zu Hause misst niemand. Ich fresse mir einfach den Weg frei. +::: + +## Jetzt in Java: Die Richtung merken + +Jetzt weiß der mBot2, **wie viel** Platz es höchstens gibt. Aber **wo**? Dafür merkt er sich in einer zweiten Variablen auch die Richtung. Die Zählvariable \`i\` sagt dir, die wievielte Messung es war: 0 ist vorn, 1 ist rechts, 2 ist hinten und 3 ist links. + +\`\`\`java +if (abstand > max) { + max = abstand; + richtung = i; +} +\`\`\` + +Beide Zeilen stehen im Ja-Zweig. Nur wenn es einen neuen Rekord gibt, ändert sich auch die Richtung. + +::: übung vb-java-richtung +titel: Die Richtung merken +code: java +auftrag: Schreibe „Wo ist am meisten Platz?“ in Java. Merke dir zusätzlich in \`int richtung = 0\` die Nummer der Messung mit dem größten Abstand. Zeige zum Schluss zum Beispiel **Richtung: 1**. +welt: platz-1 -> screen "Richtung: 1" +welt: platz-2 -> screen "Richtung: 0" +braucht: forSchleife, verzweigung +tipp: Vor der Schleife stehen \`int max = 0;\` und \`int richtung = 0;\`. In der Schleife: \`int abstand = mbot.getDistance();\`, die Verzweigung und \`mbot.turnRight();\`. +tipp: Im Ja-Zweig stehen \`max = abstand;\` und \`richtung = i;\`. Nach der Schleife: \`mbot.showText("Richtung: " + richtung);\` +lösung: vb-java-richtung-loesung.visustruct +::: + +::: übung vb-fehler-08-groesster-wert +titel: Warum läuft das nicht? +code: java +auftrag: Ludwig hat „Die Richtung merken“ abgetippt, aber das Programm läuft nicht. „Im Editor öffnen“ zeigt den Code im Bereich Code. Klicke auf „Ausführen“ und lies die Fehlermeldung. Repariere den Fehler und klicke auf Prüfen. +start: vb-fehler-08-groesster-wert-start.visustruct +welt: platz-1 -> screen "Richtung: 1" +welt: platz-2 -> screen "Richtung: 0" +tipp: Die Fehlermeldung nennt eine unbekannte Variable. Wie heißt die Variable dort, wo sie angelegt wird? Java unterscheidet Groß- und Kleinschreibung. +tipp: Richtig heißt es \`richtung = i\`. +lösung: vb-java-richtung-loesung.visustruct +::: + +## Spiel: Neuer Rekord? + +::: spiel frage +titel: Spiel: Neuer Rekord? +intro: Der mBot2 misst nacheinander mehrere Abstände. Was steht am Ende in \`max\`? Fünf Runden. + +runde: +frage: Gemessen: 20, 50, 30 +- 30 +- [x] 50 +- 100 +> 50 ist der größte Wert. Die 30 danach ist kein neuer Rekord. + +runde: +frage: Gemessen: 10, 20, 30, 40 +- 10 +- [x] 40 +- 100 +> Jeder Wert ist ein neuer Rekord. Am Ende steht der letzte da. + +runde: +frage: Gemessen: 90, 10, 20, 30 +- 30 +- [x] 90 +- 10 +> Der Rekord kommt gleich am Anfang. Danach ist kein Wert größer. + +runde: +frage: Gemessen: 15, 15, 15 +- 45 +- 0 +- [x] 15 +> 15 ist nicht größer als 15. \`max\` bleibt 15. + +runde: +frage: Gemessen: 25, 60, 60, 5. In welcher Richtung (\`i\`) ist der Rekord? +- 0 +- [x] 1 +- 2 +> Bei \`i = 1\` kommt die 60. Die zweite 60 ist nicht **größer**, also bleibt \`richtung\` bei 1. +::: + +## Checkliste + +Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀️ kann ich sicher. Bei ⛅ und ☂️ hilft dir **Nachlesen**. Danach kommt der Wissenstest. Er zeigt dir, ob deine Einschätzung stimmt. + +::: checkliste +- Ich kann mit einer Variablen den bisher größten Wert merken. → Den Rekord merken +- Ich kann in einer Schleife jeden neuen Messwert mit dem bisher größten vergleichen. → Wo ist am meisten Platz? +- Ich kann mit dem mBot2 herausfinden, in welcher Richtung am meisten Platz ist. → Jetzt in Java: Die Richtung merken +::: + +## Wissenstest + +::: quiz +? Womit fängt \`max\` vor der Schleife an? +→ Den Rekord merken +- [x] Mit 0, weil noch nichts gemessen ist +- [ ] Mit dem größten Wert +- [ ] Mit 100 +> Jeder Abstand ist größer als 0, also wird schon der erste Messwert der Rekord. +? Was steht im Nein-Zweig der Verzweigung \`abstand > max\`? +→ Den Rekord merken +- [ ] \`max = 0\` +- [ ] \`max = abstand\` +- [x] Nichts, der alte Rekord bleibt. +? Wann ändert sich \`richtung\`? +→ Jetzt in Java: Die Richtung merken +- [ ] In jedem Durchgang +- [x] Nur wenn es einen neuen Rekord gibt +- [ ] Nur in der letzten Runde +::: +`,Kw=`--- titel: Fallauswahl mit Farben bereich: Sensoren und Entscheidungen kurz: Je nach Farbe oder Linie etwas anderes tun, mit einer Fallauswahl statt vieler Verzweigungen. @@ -44610,7 +45281,7 @@ Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀ - [ ] \`if 6 -> { … }\` > Zahlen stehen ohne Anführungszeichen, Texte wie \`"rot"\` mit. ::: -`,Uw=`--- +`,Xw=`--- titel: Tasten und Joystick bereich: Sensoren und Entscheidungen kurz: Der mBot2 wartet auf dich und lässt sich fernsteuern. @@ -44787,7 +45458,7 @@ Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀ - [ ] Ohne Pause fährt der mBot2 rückwärts. > Die Schleife fragt alle 100 Millisekunden nach, das reicht völlig. ::: -`,Yw=`--- +`,e9=`--- titel: Notbremse mit break bereich: Sensoren und Entscheidungen kurz: Eine Endlosschleife mit Aussprung: Der mBot2 fährt immer weiter, bis die Notbremse greift. @@ -45017,7 +45688,7 @@ Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀ - [ ] \`for (;;) break;\` > \`true\` ist immer wahr, die Schleife hört nur mit \`break\` auf. ::: -`,$w=`--- +`,t9=`--- titel: Der Lichtsensor bereich: Sensoren und Entscheidungen kurz: Hell oder dunkel? Der mBot2 wird zum Nachtlicht. @@ -45181,7 +45852,162 @@ Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀ - [x] 0 bis 100 - [ ] -100 bis 100 ::: -`,Kw=`--- +`,n9=`--- +titel: Ein Merker mit boolean +bereich: Sensoren und Entscheidungen +kurz: Mit einer Variablen vom Typ boolean festhalten, ob etwas passiert ist. +--- + +## Diese Kompetenzen erwerbe ich jetzt + +::: kompetenzen +- eine Variable vom Typ \`boolean\` anlegen +- mit einem Merker festhalten, ob etwas passiert ist +- einen Merker nach der Schleife in einer Bedingung abfragen +::: + +## Wahr oder falsch + +Eine Variable vom Typ \`boolean\` kennt nur zwei Werte: \`true\` (wahr) und \`false\` (falsch). Du kennst das schon von den Sensoren: \`mbot.isButtonA()\` liefert \`true\` oder \`false\`. Auch ein Vergleich wie \`mbot.getDistance() < 10\` ist am Ende \`true\` oder \`false\`. + +| Anlegen | Bedeutung | +|---|---| +| \`boolean dunkel = false\` | Es war noch nicht dunkel. | +| \`dunkel = true\` | Jetzt war es dunkel. | +| \`if (dunkel)\` | Ist \`dunkel\` wahr? | + +Bei \`if (dunkel)\` brauchst du kein \`== true\`. Die Variable ist ja selbst schon wahr oder falsch. + +## Der Merker + +Der mBot2 soll drei Sekunden lang Wache halten. Er misst immer wieder die Helligkeit. Danach soll er sagen, ob es **irgendwann** dunkel war. + +Dafür nimmst du einen **Merker**: eine \`boolean\`-Variable, die mit \`false\` anfängt. Wird es dunkel, setzt du sie auf \`true\`. Danach setzt sie niemand mehr zurück. Nach der Schleife weißt du also: War es auch nur ein einziges Mal dunkel? + +::: übung vb-wurde-es-dunkel +titel: Wurde es dunkel? +auftrag: Baue ein Struktogramm: Lege \`boolean dunkel = false\` an. Prüfe in einer For-Schleife 30-mal: Ist die Helligkeit kleiner als 20, wird \`dunkel\` wahr. Warte in jedem Durchgang 100 ms. Zeige danach **Es war dunkel** oder **Immer hell**. +messwerte: getBrightness=80/10/80 -> none, screen "Es war dunkel" +messwerte: getBrightness=80 -> none, screen "Immer hell" +braucht: forSchleife, verzweigung +tipp: In der Schleife steht eine Verzweigung mit \`mbot.getBrightness() < 20\`. Im Ja-Zweig steht \`dunkel = true\`, der Nein-Zweig bleibt leer. Danach kommt \`mbot.pause(100)\`. +tipp: Nach der Schleife kommt eine zweite Verzweigung mit der Bedingung \`dunkel\`. Ja: \`mbot.showText("Es war dunkel")\`, Nein: \`mbot.showText("Immer hell")\`. +lösung: vb-wurde-es-dunkel-loesung.visustruct +::: + +> Beim Prüfen wird es in der Mitte der Wache kurz dunkel und dann wieder hell. Zeigt dein mBot2 trotzdem **Es war dunkel**? + +## Jetzt in Java: Wurde geklatscht? + +In Java sieht der Merker so aus: + +\`\`\`java +boolean laut = false; +for (int i = 0; i < 30; i++) { + if (mbot.getLoudness() > 60) { + laut = true; + } + mbot.pause(100); +} +\`\`\` + +\`true\` und \`false\` schreibst du in Java immer klein. + +::: übung vb-java-klatsch-merker +titel: Wurde geklatscht? +code: java +auftrag: Schreibe in Java: Der mBot2 hört drei Sekunden lang zu (30-mal mit 100 ms Pause). Ist die Lautstärke einmal größer als 60, merkt er sich das in \`boolean laut\`. Danach zeigt er **Geklatscht!** oder **Alles still**. +messwerte: getLoudness=0/90/0 -> none, screen "Geklatscht!" +messwerte: getLoudness=0 -> none, screen "Alles still" +braucht: forSchleife, verzweigung +tipp: Nimm den Code oben und schreibe danach \`if (laut) { … } else { … }\`. +tipp: In die Zweige kommen \`mbot.showText("Geklatscht!");\` und \`mbot.showText("Alles still");\`. +lösung: vb-java-klatsch-merker-loesung.visustruct +::: + +::: übung vb-fehler-11-merker-boolean +titel: Warum läuft das nicht? +code: java +auftrag: Ludwig hat „Wurde geklatscht?“ abgetippt, aber das Programm läuft nicht. „Im Editor öffnen“ zeigt den Code im Bereich Code. Klicke auf „Ausführen“ und lies die Fehlermeldung. Repariere den Fehler und klicke auf Prüfen. +start: vb-fehler-11-merker-boolean-start.visustruct +messwerte: getLoudness=0/90/0 -> none, screen "Geklatscht!" +messwerte: getLoudness=0 -> none, screen "Alles still" +tipp: Die Fehlermeldung nennt eine unbekannte Variable. Wie schreibt man wahr und falsch in Java? Java unterscheidet Groß- und Kleinschreibung. +tipp: Richtig heißt es \`laut = true\`. +lösung: vb-java-klatsch-merker-loesung.visustruct +::: + +## Spiel: true oder false? + +::: spiel frage +titel: Spiel: true oder false? +intro: Ludwig fragt, was in der Bedingung herauskommt. Sechs Runden. +frage: Ist es true oder false? +antworten: true | false + +runde: +frage: \`mbot.getDistance() < 10\`, der Abstand ist 25 cm. +richtig: false +> 25 ist nicht kleiner als 10. + +runde: +frage: \`mbot.isButtonA()\`, und du drückst gerade Taste A. +richtig: true +> Der Sensor meldet: gedrückt. + +runde: +frage: \`boolean dunkel = false\`. In der Schleife wird es nie dunkel. Was ist \`dunkel\` danach? +richtig: false +> Niemand hat den Merker auf \`true\` gesetzt. + +runde: +frage: \`boolean dunkel = false\`. In der Schleife wird es einmal dunkel, danach wieder hell. Was ist \`dunkel\` danach? +richtig: true +> Ein Merker bleibt \`true\`, wenn er einmal gesetzt wurde. + +runde: +frage: \`mbot.getBrightness() > 50\`, die Helligkeit ist 50. +richtig: false +> 50 ist nicht größer als 50. + +runde: +frage: \`!mbot.isButtonA()\`, und du drückst Taste A nicht. +richtig: true +> Taste A ist nicht gedrückt, also \`false\`. Das \`!\` dreht es um: \`true\`. +::: + +## Checkliste + +Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀️ kann ich sicher. Bei ⛅ und ☂️ hilft dir **Nachlesen**. Danach kommt der Wissenstest. Er zeigt dir, ob deine Einschätzung stimmt. + +::: checkliste +- Ich kann eine Variable vom Typ \`boolean\` anlegen. → Wahr oder falsch +- Ich kann mit einem Merker festhalten, ob etwas passiert ist. → Der Merker +- Ich kann einen Merker nach der Schleife in einer Bedingung abfragen. → Jetzt in Java: Wurde geklatscht? +::: + +## Wissenstest + +::: quiz +? Welche Werte kann eine Variable vom Typ \`boolean\` haben? +→ Wahr oder falsch +- [ ] Jede ganze Zahl +- [x] Nur \`true\` und \`false\` +- [ ] Nur 0 und 1 +? Womit fängt ein Merker an? +→ Der Merker +- [x] Mit \`false\`, weil noch nichts passiert ist +- [ ] Mit \`true\` +- [ ] Mit dem ersten Messwert +> Erst wenn das Ereignis passiert, wird er \`true\`. +? Wie fragst du in Java ab, ob der Merker \`laut\` wahr ist? +→ Jetzt in Java: Wurde geklatscht? +- [x] \`if (laut)\` +- [ ] \`if (laut = true)\` +- [ ] \`if laut\` +> \`laut\` ist selbst schon wahr oder falsch. Ein einzelnes \`=\` wäre eine Zuweisung. +::: +`,i9=`--- titel: Das Mikrofon bereich: Sensoren und Entscheidungen kurz: Klatschen zum Losfahren und eine Lärmampel für das Klassenzimmer. @@ -45344,7 +46170,7 @@ Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀ - [ ] Der mBot2 fährt los. > 30 ist kleiner als 50, die Bedingung ist wahr, die Schleife läuft weiter. ::: -`,Xw=`--- +`,a9=`--- titel: Der Lagesensor bereich: Sensoren und Entscheidungen kurz: Neigung messen und Schütteln erkennen. @@ -45528,7 +46354,7 @@ Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀ - [x] Es meldet, ob jemand den mBot2 schüttelt. > Sensoren tun nichts, sie messen nur. ::: -`,e9=`--- +`,s9=`--- titel: Die LEDs bereich: Licht, Ton und Bildschirm kurz: Farben mischen, eine Ampel bauen und blinken lassen. @@ -45744,7 +46570,7 @@ Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀ - [ ] Sonst gehen die LEDs kaputt. - [ ] Weil \`ledOff()\` sonst nicht geht. ::: -`,t9=`--- +`,r9=`--- titel: Einzelne LEDs bereich: Licht, Ton und Bildschirm kurz: Jede der fünf LEDs bekommt ihre eigene Farbe, bis zum Lauflicht. @@ -45953,7 +46779,7 @@ Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀ - [x] Nur LED 4 geht aus. - [ ] Vier LEDs gehen aus. ::: -`,n9=`--- +`,o9=`--- titel: Der Lautsprecher bereich: Licht, Ton und Bildschirm kurz: Töne, eine Tonleiter und eine Sirene. @@ -46120,7 +46946,7 @@ Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀ - [ ] 1000 Sekunden > 1000 Millisekunden sind eine Sekunde. ::: -`,i9=`--- +`,l9=`--- titel: Arrays und Melodien bereich: Licht, Ton und Bildschirm kurz: Viele Werte in einem Array speichern und mit einer Schleife abarbeiten. @@ -46364,7 +47190,7 @@ Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀ - [ ] 330 > \`length\` zählt die Fächer, hier drei. Das letzte Fach hat deshalb die Nummer 2. ::: -`,a9=`--- +`,u9=`--- titel: Der Bildschirm bereich: Licht, Ton und Bildschirm kurz: Text, Zahlen und Messwerte auf dem CyberPi anzeigen. @@ -46570,7 +47396,7 @@ Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀ - [x] Er wird ersetzt. - [ ] Der neue kommt darunter. ::: -`,s9=`--- +`,m9=`--- titel: Zeichenketten bereich: Licht, Ton und Bildschirm kurz: Mit Texten rechnen, Buchstaben herausholen und auf dem Bildschirm zeigen. @@ -46762,7 +47588,7 @@ Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀ - [ ] \`g\` > Die Zeichen werden ab 0 gezählt. Zeichen 0 ist das erste. ::: -`,r9=`--- +`,c9=`--- titel: Motoren und Geschwindigkeit bereich: Motoren und Methoden kurz: Gas geben, lenken und einer Linie folgen. @@ -46933,7 +47759,7 @@ Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀ - [ ] \`mbot.drive(-40, -40)\` > Dreht sich das linke Rad schneller, fährt er eine Rechtskurve. ::: -`,o9=`--- +`,d9=`--- titel: Stoppuhr und Akku bereich: Motoren und Methoden kurz: Zeit messen und den Akku im Blick behalten. @@ -47106,7 +47932,167 @@ Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀ - [ ] Weil die Stoppuhr sonst stehen bleibt. > Gas geben gilt weiter, auch während er wartet. ::: -`,l9=`--- +`,h9=`--- +titel: Zustände: Was mache ich gerade? +bereich: Motoren und Methoden +kurz: Mit einer Zustandsvariablen und einer Fallauswahl eine Robo-Ampel weiterschalten. +--- + +## Diese Kompetenzen erwerbe ich jetzt + +::: kompetenzen +- erklären, was ein Zustand ist +- mit einer Fallauswahl je nach Zustand handeln und in den nächsten Zustand wechseln +- Zustände in Java mit Namen und \`.equals\` unterscheiden +::: + +## Was ist ein Zustand? + +Eine Ampel ist immer in genau einem **Zustand**: rot, grün oder gelb. In jedem Zustand weiß sie zwei Dinge: Was zeige ich? Und was kommt danach? + +Unsere Robo-Ampel hat drei Zustände. Jeder bekommt eine Nummer: + +| Zustand | LEDs | danach | +|---|---|---| +| 0 | rot | 1 | +| 1 | grün | 2 | +| 2 | gelb | 0 | + +Den aktuellen Zustand speicherst du in einer Variablen: \`int zustand = 0\`. So eine Variable heißt **Zustandsvariable**. Ein Programm, das so von Zustand zu Zustand springt, heißt **Zustandsautomat**. + +> Eine echte Ampel in Deutschland hat vier Zustände: rot, rot-gelb, grün, gelb. Unsere Robo-Ampel lässt rot-gelb weg. + +::: angeberwissen +Auch ein Saugroboter ist ein Zustandsautomat: saugen, ausweichen, zur Ladestation fahren. Ich habe nur zwei Zustände: fressen und schlafen. +::: + +## Die Robo-Ampel im Struktogramm + +Die Fallauswahl passt perfekt: Für jeden Zustand gibt es einen Fall. In jedem Fall stehen zwei Kästen: Was tue ich? Und welcher Zustand kommt als Nächstes? + +::: übung vb-ampel-zustand +titel: Robo-Ampel +auftrag: Baue ein Struktogramm: Lege \`int zustand = 0\` an. Eine For-Schleife läuft sechsmal. In ihr steht eine Fallauswahl über \`zustand\`. Fall 0: LEDs rot, \`zustand = 1\`. Fall 1: LEDs grün, \`zustand = 2\`. Sonst: LEDs gelb, \`zustand = 0\`. Nach der Fallauswahl wartet der mBot2 eine Sekunde. +befehle: 2 x (setLed 255 0 0, pause 1000, setLed 0 255 0, pause 1000, setLed 255 200 0, pause 1000) +braucht: forSchleife, fallauswahl +tipp: Die Fallauswahl findest du bei den Elementen. Schreib \`zustand\` hinein. Die Fälle heißen 0, 1 und sonst (default). +tipp: Die Farben sind \`mbot.setLed(255, 0, 0)\` für rot, \`mbot.setLed(0, 255, 0)\` für grün und \`mbot.setLed(255, 200, 0)\` für gelb. Unter der Fallauswahl, noch in der Schleife, steht \`mbot.pause(1000)\`. +lösung: vb-ampel-zustand-loesung.visustruct +::: + +> 📘 **Mehr dazu ohne Roboter:** In VisuStruct gibt es die Lektion [„Fallauswahl“](?visustruct&lektion=10-fallauswahl). Sie öffnet sich in einem neuen Fenster. + +## Jetzt in Java: Zustände mit Namen + +Nummern sind schnell vergessen. Was war noch mal Zustand 2? Lesbarer sind Namen. Dann ist der Zustand ein Text: + +\`\`\`java +String zustand = "rot"; +... +if (zustand.equals("rot")) { + mbot.setLed(255, 0, 0); + zustand = "grün"; +} else if (zustand.equals("grün")) { + ... +\`\`\` + +Texte vergleichst du in Java mit \`.equals("…")\`, nicht mit \`==\`. + +::: übung vb-java-ampel-text +titel: Ampel mit Namen +code: java +auftrag: Schreibe die Robo-Ampel in Java mit \`String zustand = "rot";\`. Prüfe mit \`if\` und \`else if\`, in welchem Zustand die Ampel ist: rot, dann grün, dann gelb, dann wieder rot. Die Schleife läuft sechsmal, nach jedem Durchgang 1 Sekunde Pause. +befehle: 2 x (setLed 255 0 0, pause 1000, setLed 0 255 0, pause 1000, setLed 255 200 0, pause 1000) +braucht: forSchleife, verzweigung +tipp: In der Schleife: \`if (zustand.equals("rot")) { … } else if (zustand.equals("grün")) { … } else { … }\` und danach \`mbot.pause(1000);\`. +tipp: Im Fall rot stehen \`mbot.setLed(255, 0, 0);\` und \`zustand = "grün";\`. Grün schaltet auf \`"gelb"\`, gelb wieder auf \`"rot"\`. +lösung: vb-java-ampel-text-loesung.visustruct +::: + +::: übung vb-fehler-21-zustaende +titel: Warum läuft das nicht? +code: java +auftrag: Ludwig hat „Ampel mit Namen“ abgetippt, aber das Programm läuft nicht. „Im Editor öffnen“ zeigt den Code im Bereich Code. Klicke auf „Ausführen“ und lies die Fehlermeldung. Repariere den Fehler und klicke auf Prüfen. +start: vb-fehler-21-zustaende-start.visustruct +befehle: 2 x (setLed 255 0 0, pause 1000, setLed 0 255 0, pause 1000, setLed 255 200 0, pause 1000) +tipp: Ein Text gehört in Anführungszeichen. Ohne sie sucht Java eine Variable mit diesem Namen. +tipp: Richtig heißt es \`zustand = "grün"\`. +lösung: vb-java-ampel-text-loesung.visustruct +::: + +## Zustände beim Fahren + +Mit Zuständen kann der mBot2 auch fahren. Im Zustand **fahren** fährt er vor. Sieht er eine Wand, wechselt er in den Zustand **drehen**. Dort dreht er sich einmal und wechselt zurück zu **fahren**. + +::: diagramm vb-l21z-ausweichen.visustruct +Fahren und Ausweichen mit zwei Zuständen. Öffne das Diagramm im Editor und probiere es in einer Welt aus. +::: + +## Spiel: Welcher Zustand kommt jetzt? + +::: spiel frage +titel: Spiel: Welcher Zustand kommt jetzt? +intro: Die Robo-Ampel schaltet: 0 rot → 1 grün → 2 gelb → 0 rot. Welcher Zustand kommt als Nächstes? Fünf Runden. +frage: Welcher Zustand kommt danach? +antworten: 0 | 1 | 2 + +runde: +frage: Die Ampel ist gerade in Zustand **0** (rot). +richtig: 1 +> Nach rot kommt grün. + +runde: +frage: Die Ampel ist gerade in Zustand **2** (gelb). +richtig: 0 +> Nach gelb geht es wieder von vorn los. + +runde: +frage: Die Ampel ist gerade in Zustand **1** (grün). +richtig: 2 +> Nach grün kommt gelb. + +runde: +frage: Die Ampel startet in Zustand 0 und schaltet **zweimal** weiter. +richtig: 2 +> 0 → 1 → 2. + +runde: +frage: Die Ampel startet in Zustand 0 und schaltet **dreimal** weiter. +richtig: 0 +> 0 → 1 → 2 → 0. Nach drei Schritten ist sie wieder am Anfang. +::: + +## Checkliste + +Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀️ kann ich sicher. Bei ⛅ und ☂️ hilft dir **Nachlesen**. Danach kommt der Wissenstest. Er zeigt dir, ob deine Einschätzung stimmt. + +::: checkliste +- Ich kann erklären, was ein Zustand ist. → Was ist ein Zustand? +- Ich kann mit einer Fallauswahl je nach Zustand handeln und in den nächsten Zustand wechseln. → Die Robo-Ampel im Struktogramm +- Ich kann Zustände in Java mit Namen und \`.equals\` unterscheiden. → Jetzt in Java: Zustände mit Namen +::: + +## Wissenstest + +::: quiz +? Was speichert eine Zustandsvariable? +→ Was ist ein Zustand? +- [ ] Wie oft die Schleife gelaufen ist +- [x] Was das Programm gerade macht, zum Beispiel rot oder grün +- [ ] Den größten Messwert +? Was steht in jedem Fall der Fallauswahl? +→ Die Robo-Ampel im Struktogramm +- [x] Was zu tun ist und welcher Zustand als Nächstes kommt +- [ ] Nur eine Pause +- [ ] Eine neue Schleife +? Wie prüfst du in Java, ob \`zustand\` den Text \`"rot"\` enthält? +→ Jetzt in Java: Zustände mit Namen +- [ ] \`zustand == rot\` +- [x] \`zustand.equals("rot")\` +- [ ] \`zustand = "rot"\` +> Texte vergleichst du mit \`.equals\`. Ein einzelnes \`=\` würde \`"rot"\` zuweisen. +::: +`,g9=`--- titel: Eigene Methoden bereich: Motoren und Methoden kurz: Eigene Befehle mit Parametern und Rückgabewert schreiben und aufrufen. @@ -47440,7 +48426,7 @@ Schätze dich bei jedem Punkt ehrlich ein: ☂️ noch nicht, ⛅ teilweise, ☀ - [ ] \`static\` > Statt \`void\` steht der Datentyp des Ergebnisses in der Kopfzeile. ::: -`,u9=`## 🤖 mBot2-Befehle +`,p9=`## 🤖 mBot2-Befehle Ein Befehl sagt dem mBot2, was er **tun** soll. Jeder Befehl beginnt mit \`mbot.\` und endet mit Klammern. In die Klammern schreibst du oft eine Zahl. @@ -47608,7 +48594,7 @@ Mit **🔌 mBot2** neben „Simulation starten“ verbindest du den echten Robot ### Ohne Kabel fahren Mit **⬆ Übertragen** speicherst du dein Programm fest auf dem mBot2. Danach Kabel ab, mBot2 an den Start und **Taste A** drücken: Er fährt dein Programm allein. Es bleibt gespeichert, bis du ein neues überträgst. Eingaben mit der Tastatur gehen am mBot2 nicht. -`,m9=`--- +`,f9=`--- titel: Structure chart and editor bereich: Getting started kurz: What a structure chart is, how to use the editor and how to save your programs. @@ -47767,7 +48753,7 @@ Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can - [ ] \`.png\` > \`.png\` is a picture to pass on. You can only keep editing the \`.visustruct\` file. ::: -`,c9=`--- +`,b9=`--- titel: The mBot2 bereich: Getting started kurz: Get to know the robot you are about to program. @@ -48183,7 +49169,7 @@ Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can - [ ] Change the value in the simulation by hand > If a value does not change although you do something, something is wrong with the robot. ::: -`,d9=`--- +`,x9=`--- titel: The square bereich: Getting started kurz: From a long structure chart to a triple nested loop. @@ -48548,7 +49534,7 @@ Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can - [ ] with **⬆ Transfer** > After the transfer the mBot2 shows **A = Start** and waits for button A. ::: -`,h9=`--- +`,v9=`--- titel: Variables and output bereich: Getting started kurz: Store values in variables, drive the mBot2 with them and show results on the screen. @@ -48797,7 +49783,7 @@ Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can - [ ] 30 > The \`+\` joins the text and the number. ::: -`,g9=`--- +`,y9=`--- titel: Testing step by step bereich: Getting started kurz: Use the simulation and a desk check to find out what your program really does. @@ -48980,7 +49966,7 @@ Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can - [ ] a fault in the robot > The program does exactly what it says, just not what was meant. ::: -`,p9=`--- +`,w9=`--- titel: Reading sensors bereich: Sensors and decisions kurz: The mBot2 measures something, and your program decides. @@ -49147,7 +50133,7 @@ Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can - [ ] Because sensors only work in Java. > Commands are statements. Sensors are values, just like a variable. ::: -`,f9=`--- +`,z9=`--- titel: Up to the wall bereich: Sensors and decisions kurz: The mBot2 measures the distance and stops in time. @@ -49354,7 +50340,7 @@ Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can - [ ] Because the mBot2 does not understand for loops. > The for loop knows beforehand how often it runs. The while loop decides on the way. ::: -`,b9=`--- +`,I9=`--- titel: Drive first, then check bereich: Sensors and decisions kurz: The do-while loop always drives at least once and only checks afterwards. @@ -49625,7 +50611,161 @@ Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can - [ ] nothing > \`} while (condition);\` ends with a semicolon. ::: -`,x9=`--- +`,k9=`--- +titel: Counting and adding up +bereich: Sensors and decisions +kurz: Count along with a variable and add values together. +--- + +## Skills I will gain now + +::: kompetenzen +- create a counter variable and count it up in a loop +- build a sum in a loop +- show the result on the screen after the loop +::: + +## Counting along + +How many steps does the mBot2 drive to the wall? You don't know in advance, the world is different every time. So the mBot2 should **count along**. You need three boxes for that: + +1. **Before** the loop: \`int steps = 0\`. At the start nothing has been counted yet. +2. **Inside** the loop: \`steps = steps + 1\`. One more after every step. +3. **After** the loop: show the result, for example with \`mbot.showText("Steps: " + steps)\`. + +Read \`steps = steps + 1\` from right to left: take the old value of \`steps\`, add 1 and store the result in \`steps\` again. A variable like this is called a **counter variable**, or counter for short. + +> Careful: if \`int steps = 0\` is **inside** the loop, the counter starts again at 0 in every pass. Then the result is always 1. + +::: angeberwissen +Your phone counts your steps exactly like this: with every step it calculates \`steps = steps + 1\`. I prefer counting my blades of grass. I'm at 4 million. +::: + +::: übung vb-schritte-welt +titel: Steps to the wall +auftrag: Build a structure chart: the mBot2 drives forward as long as the distance is greater than 15. It counts its steps along the way. Then it shows, for example, **Steps: 3** on the screen. There are three worlds. +welt: wand-kurz -> screen "Steps: 3" +welt: wand-mittel -> screen "Steps: 7" +welt: wand-lang -> screen "Steps: 12" +braucht: whileSchleife +tipp: The first box is \`int steps = 0\`. Then comes the while loop with \`mbot.getDistance() > 15\`. +tipp: Inside the loop are **drive forward** and \`steps = steps + 1\`. After the loop is \`mbot.showText("Steps: " + steps)\`. +lösung: vb-schritte-welt-loesung.visustruct +::: + +## Adding up + +A counter always grows by 1. A **sum** grows by different values. The mBot2 drives a spiral: first 10 cm, then 20, then 30, then 40. How far has it driven in total? + +| Pass | \`side\` | \`total\` afterwards | +|---|---|---| +| before | 10 | 0 | +| 1 | 10 | 0 + 10 = 10 | +| 2 | 20 | 10 + 20 = 30 | +| 3 | 30 | 30 + 30 = 60 | +| 4 | 40 | 60 + 40 = 100 | + +The pattern is the same as for counting. Only instead of 1 you now add the value that comes in: \`total = total + side\`. + +## Now in Java: spiral with distance + +::: übung vb-java-spirale-strecke +titel: Spiral with distance +code: java +auftrag: Write in Java: create \`int side = 10\` and \`int total = 0\`. Four times: drive \`side\` cm forward, turn right, add \`side\` to \`total\`, make \`side\` 10 bigger. Then show **Distance: 100 cm** on the screen. +fahrt: forward 10, turnRight, forward 20, turnRight, forward 30, turnRight, forward 40, turnRight +befehle: showText "Distance: 100 cm" +braucht: forSchleife +tipp: The for loop has four lines: \`mbot.forward(side);\`, \`mbot.turnRight();\`, \`total = total + side;\` and \`side = side + 10;\`. +tipp: After the loop comes \`mbot.showText("Distance: " + total + " cm");\`. +lösung: vb-java-spirale-strecke-loesung.visustruct +::: + +::: übung vb-fehler-05-zaehlen-und-summieren +titel: Why doesn't it run? +code: java +auftrag: Ludwig typed in "Spiral with distance", but the program does not run. "Open in editor" shows the code in the Code area. Click "Run" and read the error message. Fix the mistake and click Check. +start: vb-fehler-05-zaehlen-und-summieren-start.visustruct +fahrt: forward 10, turnRight, forward 20, turnRight, forward 30, turnRight, forward 40, turnRight +befehle: showText "Distance: 100 cm" +tipp: The error message names an unknown variable. What is the variable called where it is created? Java is case-sensitive. +tipp: It should be \`total = total + side\`. +lösung: vb-java-spirale-strecke-loesung.visustruct +::: + +## Game: what is in the variable at the end? + +::: spiel frage +titel: Game: what is in the variable at the end? +intro: Ludwig has written small programs. Work them out in your head. Five rounds. + +runde: +frage: \`int z = 0\`, then three times \`z = z + 1\`. What is \`z\`? +- 1 +- [x] 3 +- 0 +> Each pass adds 1: 1, 2, 3. + +runde: +frage: \`int sum = 0\`, then \`sum = sum + 5\` and \`sum = sum + 7\`. What is \`sum\`? +- 7 +- [x] 12 +- 5 +> 0 + 5 = 5, then 5 + 7 = 12. + +runde: +frage: A loop runs four times. Inside it are \`int z = 0\` and \`z = z + 1\`. What is \`z\` at the end? +- 4 +- [x] 1 +- 0 +> The counter is set back to 0 in every pass. It belongs before the loop. + +runde: +frage: \`int total = 0\`. The mBot2 drives 20, 20 and 30 cm and adds each one. What is \`total\`? +- 30 +- 20 +- [x] 70 +> 20 + 20 + 30 = 70. + +runde: +frage: \`int steps = 10\`, then twice \`steps = steps + 1\`. What is \`steps\`? +- 2 +- [x] 12 +- 11 +> Here the counter starts at 10, not at 0. +::: + +## Checklist + +Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can do this confidently. For ⛅ and ☂️, **Review** helps you. Then comes the quiz. It shows you whether your self-assessment is right. + +::: checkliste +- I can create a counter variable and count it up in a loop. → Counting along +- I can build a sum in a loop. → Adding up +- I can show the result on the screen after the loop. → Now in Java: spiral with distance +::: + +## Quiz + +::: quiz +? Where do you create the counter variable \`int steps = 0\`? +→ Counting along +- [x] Before the loop +- [ ] Inside the loop +- [ ] After the loop +> Inside the loop it would become 0 again in every pass. +? What does \`steps = steps + 1\` do? +→ Counting along +- [ ] It compares steps with steps + 1. +- [x] It takes the old value, adds 1 and stores the result. +- [ ] It sets steps to 1. +? How do you add the side length \`side\` to the sum \`total\`? +→ Adding up +- [ ] \`total = side\` +- [ ] \`side = total + side\` +- [x] \`total = total + side\` +::: +`,S9=`--- titel: The ultrasonic sensor bereich: Sensors and decisions kurz: Measure the distance, keep your distance, and do it all in Java. @@ -49813,7 +50953,347 @@ Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can - [ ] \`otherwise\` > \`if\` is the start, \`else\` the false branch. ::: -`,v9=`--- +`,T9=`--- +titel: Fixed values with final +bereich: Sensors and decisions +kurz: Create a constant so that an important number appears in only one place. +--- + +## Skills I will gain now + +::: kompetenzen +- explain what a constant is +- create a constant in the structure chart and in Java +- use a constant in a condition and in a command +::: + +## One number in many places + +Ludwig has written a program for the hallway: the mBot2 drives up to 20 cm from the wall, turns around and drives up to 20 cm from the other wall. + +::: diagramm vb-l06k-ohne.visustruct +There and back. The number 20 appears in two places. +::: + +Now the mBot2 should stop at 30 cm instead. Ludwig has to find and change every 20. If he forgets one, the mBot2 stops once at 30 and once at 20 cm. In long programs this happens quickly. + +::: angeberwissen +Professionals call a number that just sits in the program a **magic number**. Magic, because nobody remembers what it means. The only magic I like is magic grass. +::: + +## Creating a constant + +A **constant** is better. It is a variable whose value stays the same once it is set. You create it once at the very top and after that you only use its name. + +| | Structure chart | Java | +|---|---|---| +| create | \`const int DISTANCE = 20\` | \`final int DISTANCE = 20;\` | +| use | \`mbot.getDistance() > DISTANCE\` | \`mbot.getDistance() > DISTANCE\` | + +In the structure chart you write \`const\` in front, in Java \`final\`. Both mean: this value does not change any more. Names of constants are written in **capital letters**, so you can spot them right away. + +::: diagramm vb-l06k-mit.visustruct +The same program with the constant DISTANCE. For 30 cm you only change the first line. +::: + +::: übung vb-konstante-wand +titel: Wall with a constant +auftrag: Create the constant \`DISTANCE\` with the value 20. The mBot2 drives forward as long as the distance is greater than \`DISTANCE\`. Then it plays a tone. There are three worlds. +welt: wand-kurz -> tone +welt: wand-mittel -> tone +welt: wand-lang -> tone +braucht: whileSchleife +tipp: The first box is a statement with \`const int DISTANCE = 20\`. Below it comes a while loop. +tipp: The loop condition is \`mbot.getDistance() > DISTANCE\`. Inside the loop is **drive forward**, after the loop **play tone**. +lösung: vb-konstante-wand-loesung.visustruct +::: + +## Now in Java: square with a constant + +A constant also fits into a command. With \`final int SIDE = 30;\`, \`mbot.forward(SIDE);\` drives exactly 30 cm. If the square should get bigger, you only change that one line. + +::: übung vb-java-konstante-seite +titel: Square with a constant +code: java +auftrag: Write in Java: create the constant \`SIDE\` with the value 30. Then use a for loop to drive a square with side length \`SIDE\`. +fahrt: 4 x (forward 30, turnRight) +braucht: forSchleife +tipp: The first line is \`final int SIDE = 30;\`. Then comes \`for (int i = 0; i < 4; i++) { … }\`. +tipp: Inside the loop are \`mbot.forward(SIDE);\` and \`mbot.turnRight();\`. +lösung: vb-java-konstante-seite-loesung.visustruct +::: + +::: übung vb-fehler-06-konstanten-final +titel: Why doesn't it run? +code: java +auftrag: Ludwig typed in "Square with a constant", but the program does not run. "Open in editor" shows the code in the Code area. Click "Run" and read the error message. Fix the mistake and click Check. +start: vb-fehler-06-konstanten-final-start.visustruct +fahrt: 4 x (forward 30, turnRight) +tipp: The error message names an unknown variable. What is the constant called where it is created? Constants are written in capital letters. +tipp: It should be \`mbot.forward(SIDE)\`. +lösung: vb-java-konstante-seite-loesung.visustruct +::: + +## Game: constant or variable? + +::: spiel frage +titel: Game: constant or variable? +intro: Ludwig is sorting values. If the value stays the same in the whole program, it is a constant. If it changes, it is a variable. Six rounds. +frage: Constant or variable? +antworten: Constant | Variable + +runde: +frage: The number of corners of a square +richtig: Constant +> A square always has four corners. + +runde: +frage: The distance the ultrasonic sensor is measuring right now +richtig: Variable +> When the mBot2 drives, the distance changes all the time. + +runde: +frage: The minimum distance at which the mBot2 should always stop +richtig: Constant +> You set it once, for example \`final int DISTANCE = 20;\`. + +runde: +frage: The number of steps the mBot2 has already driven +richtig: Variable +> It grows by 1 after every step. + +runde: +frage: The pitch of the warning tone, always 440 Hz +richtig: Constant +> The warning tone always sounds the same. + +runde: +frage: The battery level in percent +richtig: Variable +> The battery slowly runs down while driving. +::: + +## Checklist + +Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can do this confidently. For ⛅ and ☂️, **Review** helps you. Then comes the quiz. It shows you whether your self-assessment is right. + +::: checkliste +- I can explain what a constant is. → Creating a constant +- I can create a constant in the structure chart and in Java. → Creating a constant +- I can use a constant in a condition and in a command. → Now in Java: square with a constant +::: + +## Quiz + +::: quiz +? What is a constant? +→ Creating a constant +- [ ] A variable that changes in every pass +- [x] A variable whose value stays the same once it is set +- [ ] A sensor that always measures the same value +> You set a constant once. After that you only use its name. +? How do you create the constant \`DISTANCE\` with the value 20 in Java? +→ Creating a constant +- [ ] \`const DISTANCE = 20;\` +- [x] \`final int DISTANCE = 20;\` +- [ ] \`int final = 20;\` +> In Java, \`final\` comes before the data type. In the structure chart you write \`const\`. +? Why is a constant better than the number 20 in many places? +→ Creating a constant +- [ ] Because the program drives faster +- [x] Because you only have to change the value in one place +- [ ] Because the sensor measures more precisely +::: +`,_9=`--- +titel: Near, medium or far? +bereich: Sensors and decisions +kurz: Build a branch with three cases and write it in Java with else if. +--- + +## Skills I will gain now + +::: kompetenzen +- build a branch with three cases +- read and write \`else if\` in Java +- check the conditions in the right order +::: + +## Three cases instead of two + +Many cars have a **parking aid**. If the wall is far away, everything is free. When it gets closer, it says: slow. When it is very close: stop! + +A branch has only two branches, yes and no. For three cases you put a second branch into the no branch of the first one: + +1. Is the distance less than 10? Then **Stop**. +2. Otherwise: is the distance less than 30? Then **Slow**. +3. Otherwise: **Free**. + +::: diagramm vb-l06n-einparkhilfe.visustruct +The parking aid. The second question is only asked if the answer to the first one was no. +::: + +Try it in the [simulation](#zeige-simulation): open the diagram in the editor and set the distance to 5, 20 and 50 cm. + +> 📘 **More without the robot:** VisuStruct has the lesson ["Branch"](?visustruct&lektion=08-verzweigung). It opens in a new window. + +## Speed by distance in the structure chart + +::: übung vb-tempo-abstand +titel: Speed by distance +auftrag: Build a structure chart with three cases: if the distance is less than 10, the mBot2 drives 5 cm backward. Otherwise: if the distance is less than 30, it drives 5 cm forward. Otherwise it drives 20 cm forward. +messwerte: getDistance=5 -> backward 5 +messwerte: getDistance=20 -> forward 5 +messwerte: getDistance=50 -> forward 20 +braucht: verzweigung +tipp: Build it like the parking aid: a branch with \`mbot.getDistance() < 10\` and in its no branch a second one with \`mbot.getDistance() < 30\`. +tipp: The commands are \`mbot.backward(5)\`, \`mbot.forward(5)\` and \`mbot.forward(20)\`. The last one goes into the no branch of the second branch. +lösung: vb-tempo-abstand-loesung.visustruct +::: + +> When checking, VisuStruct sets the distance to 5, 20 and 50 cm one after the other. + +## Now in Java: else if + +Look at the [Code](#zeige-codelive) area. The branch inside the no branch looks like this: + +\`\`\`java +if (mbot.getDistance() < 10) { + mbot.showText("Stop"); +} else { + if (mbot.getDistance() < 30) { + mbot.showText("Slow"); + } else { + mbot.showText("Free"); + } +} +\`\`\` + +In Java you may write this more briefly. The \`if\` moves right behind the \`else\`: + +\`\`\`java +if (mbot.getDistance() < 10) { + mbot.showText("Stop"); +} else if (mbot.getDistance() < 30) { + mbot.showText("Slow"); +} else { + mbot.showText("Free"); +} +\`\`\` + +Both mean exactly the same. With \`else if\` it is easier to read, though. You still always write the curly brackets \`{ }\`. + +::: übung vb-java-tageszeit +titel: Day or night? +code: java +auftrag: Write in Java with \`else if\`: if the brightness is less than 20, the mBot2 shows **Night**. Otherwise: if it is less than 60, it shows **Dusk**. Otherwise it shows **Day**. +messwerte: getBrightness=10 -> none, screen "Night" +messwerte: getBrightness=40 -> none, screen "Dusk" +messwerte: getBrightness=80 -> none, screen "Day" +braucht: verzweigung +tipp: You read the brightness with \`mbot.getBrightness()\`. The first condition is \`mbot.getBrightness() < 20\`. +tipp: \`if (…) { mbot.showText("Night"); } else if (mbot.getBrightness() < 60) { mbot.showText("Dusk"); } else { mbot.showText("Day"); }\` +lösung: vb-java-tageszeit-loesung.visustruct +::: + +::: übung vb-fehler-06-nah-mittel-weit +titel: Why doesn't it run? +code: java +auftrag: Ludwig typed in "Day or night?", but the program does not run. "Open in editor" shows the code in the Code area. Click "Run" and read the error message. Fix the mistake and click Check. +start: vb-fehler-06-nah-mittel-weit-start.visustruct +messwerte: getBrightness=10 -> none, screen "Night" +messwerte: getBrightness=40 -> none, screen "Dusk" +messwerte: getBrightness=80 -> none, screen "Day" +tipp: A text belongs in quotation marks. Without them Java looks for a variable with that name. +tipp: It should be \`mbot.showText("Night")\`. +lösung: vb-java-tageszeit-loesung.visustruct +::: + +## The order matters + +Ludwig rebuilt the parking aid and swapped the questions: + +\`\`\`java +if (mbot.getDistance() < 30) { + mbot.showText("Slow"); +} else if (mbot.getDistance() < 10) { + mbot.showText("Stop"); +} +\`\`\` + +At 5 cm his mBot2 shows **Slow** instead of **Stop**. That is because 5 is also less than 30. The first condition is already true, so the second one is never checked. **Stop** never appears. + +> Remember: with \`<\`, check the smallest value first, then the next bigger one. + +::: spiel frage +titel: Game: what does the parking aid show? +intro: Ludwig's parking aid from above: under 10 cm **Stop**, under 30 cm **Slow**, otherwise **Free**. What does it show? Six rounds. +frage: What does the parking aid show? +antworten: Stop | Slow | Free + +runde: +frage: The distance is **5 cm**. +richtig: Stop +> 5 is less than 10. The very first question is true. + +runde: +frage: The distance is **25 cm**. +richtig: Slow +> 25 is not less than 10, but it is less than 30. + +runde: +frage: The distance is **80 cm**. +richtig: Free +> Both questions are false, so the last no branch is left. + +runde: +frage: The distance is exactly **10 cm**. +richtig: Slow +> 10 is not less than 10. The first question is false, the second true. + +runde: +frage: The distance is exactly **30 cm**. +richtig: Free +> 30 is not less than 30. Both questions are false. + +runde: +frage: The distance is **9 cm**. +richtig: Stop +> 9 is less than 10. +::: + +## Checklist + +Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can do this confidently. For ⛅ and ☂️, **Review** helps you. Then comes the quiz. It shows you whether your self-assessment is right. + +::: checkliste +- I can build a branch with three cases. → Three cases instead of two +- I can read and write \`else if\` in Java. → Now in Java: else if +- I can check the conditions in the right order. → The order matters +::: + +## Quiz + +::: quiz +? How many branches do you need in the structure chart for three cases? +→ Three cases instead of two +- [ ] One +- [x] Two, the second in the no branch of the first +- [ ] Three side by side +> Each branch splits into two. The second one splits the no branch again. +? What does \`else if\` mean in Java? +→ Now in Java: else if +- [x] Otherwise, check another condition +- [ ] Repeat the condition +- [ ] Check both conditions at the same time +> \`else if\` is the short way of writing an \`if\` inside the \`else\` branch. +? Ludwig checks \`< 30\` first and then \`< 10\`. What happens at 5 cm? +→ The order matters +- [ ] Stop appears. +- [x] Slow appears. +- [ ] Nothing appears. +> 5 is also less than 30. The second condition is no longer checked. +::: +`,j9=`--- titel: The line sensor bereich: Sensors and decisions kurz: Detect dark lines on the floor and don't fall off the table. @@ -50070,7 +51550,7 @@ Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can - [ ] \`mbot.getLine() < 0\` > \`!=\` means “not equal”. ::: -`,y9=`--- +`,A9=`--- titel: And, or, not bereich: Sensors and decisions kurz: Check two sensors in one condition: and, or, not. @@ -50327,7 +51807,7 @@ Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can - [ ] \`while (mbot.getDistance() > 15)\` > With \`||\` it would keep driving as long as just one part is true, for example over the edge. ::: -`,w9=`--- +`,C9=`--- titel: Recognising colours bereich: Sensors and decisions kurz: The quad RGB sensor tells you which colour the mBot2 is standing on. @@ -50490,7 +51970,169 @@ Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can - [ ] \`mbot.getColor() = "green"\` > \`mbot.getColor()\` gives a text, and texts are compared with \`.equals(…)\`. A single \`=\` is an assignment, not a comparison at all. ::: -`,z9=`--- +`,D9=`--- +titel: The biggest value +bereich: Sensors and decisions +kurz: Measure all around and remember the biggest value: where is the most space? +--- + +## Skills I will gain now + +::: kompetenzen +- remember the biggest value so far in a variable +- compare every new reading with the biggest so far in a loop +- find out with the mBot2 in which direction there is the most space +::: + +## Remembering the record + +In the long jump there is a board showing the **record**. After every jump the referee checks: is the new jump longer than the record? Then it goes on the board. Otherwise the old record stays. + +A program finds the biggest value in exactly the same way. The board is a variable \`max\`: + +1. **Before** the loop: \`int max = 0\`. Nothing is on the board yet. +2. **Inside** the loop: is the new value bigger than \`max\`? Then \`max = value\`. +3. **After** the loop, \`max\` holds the biggest value. + +The mBot2 turns four times and measures the distance each time. This is how it looks in a desk check: + +| Direction | measured | bigger than \`max\`? | \`max\` afterwards | +|---|---|---|---| +| before | | | 0 | +| ahead | 16 | yes | 16 | +| right | 36 | yes | 36 | +| behind | 6 | no | 36 | +| left | 26 | no | 36 | + +> Important: the branch only has a yes branch. If the value is not bigger, nothing happens. The old record stays. + +## Where is the most space? + +::: übung vb-meister-platz +titel: Where is the most space? +auftrag: Build a structure chart: create \`int max = 0\`. The mBot2 measures the distance four times and turns right after each one. If a distance is bigger than \`max\`, it remembers it in \`max\`. At the end it shows, for example, **Farthest: 36 cm**. There are two worlds. +welt: platz-1 -> screen "Farthest: 36 cm" +welt: platz-2 -> screen "Farthest: 46 cm" +braucht: forSchleife, verzweigung +tipp: The for loop runs four times. It contains three boxes: \`int distance = mbot.getDistance()\`, a branch and **turn right**. +tipp: The branch checks \`distance > max\`. The yes branch has \`max = distance\`, the no branch stays empty. After the loop: \`mbot.showText("Farthest: " + max + " cm")\`. +lösung: vb-meister-platz-loesung.visustruct +::: + +::: angeberwissen +Many robot vacuums have a small tower with a laser on top. It spins and measures the distances all around. That way the robot draws a map of the home. Nobody measures anything at my place. I just eat my way through. +::: + +## Now in Java: remembering the direction + +Now the mBot2 knows **how much** space there is at most. But **where**? For that it also remembers the direction in a second variable. The counter variable \`i\` tells you which measurement it was: 0 is ahead, 1 is right, 2 is behind and 3 is left. + +\`\`\`java +if (distance > max) { + max = distance; + direction = i; +} +\`\`\` + +Both lines are in the yes branch. The direction only changes when there is a new record. + +::: übung vb-java-richtung +titel: Remembering the direction +code: java +auftrag: Write "Where is the most space?" in Java. Also remember in \`int direction = 0\` the number of the measurement with the biggest distance. At the end show, for example, **Direction: 1**. +welt: platz-1 -> screen "Direction: 1" +welt: platz-2 -> screen "Direction: 0" +braucht: forSchleife, verzweigung +tipp: Before the loop are \`int max = 0;\` and \`int direction = 0;\`. Inside the loop: \`int distance = mbot.getDistance();\`, the branch and \`mbot.turnRight();\`. +tipp: The yes branch has \`max = distance;\` and \`direction = i;\`. After the loop: \`mbot.showText("Direction: " + direction);\` +lösung: vb-java-richtung-loesung.visustruct +::: + +::: übung vb-fehler-08-groesster-wert +titel: Why doesn't it run? +code: java +auftrag: Ludwig typed in "Remembering the direction", but the program does not run. "Open in editor" shows the code in the Code area. Click "Run" and read the error message. Fix the mistake and click Check. +start: vb-fehler-08-groesster-wert-start.visustruct +welt: platz-1 -> screen "Direction: 1" +welt: platz-2 -> screen "Direction: 0" +tipp: The error message names an unknown variable. What is the variable called where it is created? Java is case-sensitive. +tipp: It should be \`direction = i\`. +lösung: vb-java-richtung-loesung.visustruct +::: + +## Game: new record? + +::: spiel frage +titel: Game: new record? +intro: The mBot2 measures several distances one after the other. What is in \`max\` at the end? Five rounds. + +runde: +frage: Measured: 20, 50, 30 +- 30 +- [x] 50 +- 100 +> 50 is the biggest value. The 30 after it is not a new record. + +runde: +frage: Measured: 10, 20, 30, 40 +- 10 +- [x] 40 +- 100 +> Every value is a new record. At the end the last one is there. + +runde: +frage: Measured: 90, 10, 20, 30 +- 30 +- [x] 90 +- 10 +> The record comes right at the start. After that no value is bigger. + +runde: +frage: Measured: 15, 15, 15 +- 45 +- 0 +- [x] 15 +> 15 is not bigger than 15. \`max\` stays 15. + +runde: +frage: Measured: 25, 60, 60, 5. In which direction (\`i\`) is the record? +- 0 +- [x] 1 +- 2 +> At \`i = 1\` the 60 comes. The second 60 is not **bigger**, so \`direction\` stays at 1. +::: + +## Checklist + +Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can do this confidently. For ⛅ and ☂️, **Review** helps you. Then comes the quiz. It shows you whether your self-assessment is right. + +::: checkliste +- I can remember the biggest value so far in a variable. → Remembering the record +- I can compare every new reading with the biggest so far in a loop. → Where is the most space? +- I can find out with the mBot2 in which direction there is the most space. → Now in Java: remembering the direction +::: + +## Quiz + +::: quiz +? What does \`max\` start with before the loop? +→ Remembering the record +- [x] With 0, because nothing has been measured yet +- [ ] With the biggest value +- [ ] With 100 +> Every distance is bigger than 0, so the very first reading becomes the record. +? What is in the no branch of the branch \`distance > max\`? +→ Remembering the record +- [ ] \`max = 0\` +- [ ] \`max = distance\` +- [x] Nothing, the old record stays. +? When does \`direction\` change? +→ Now in Java: remembering the direction +- [ ] In every pass +- [x] Only when there is a new record +- [ ] Only in the last round +::: +`,P9=`--- titel: Case selection with colours bereich: Sensors and decisions kurz: Do something different for each colour or line, with one case selection instead of many branches. @@ -50721,7 +52363,7 @@ Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can - [ ] \`if 6 -> { … }\` > Numbers have no quotation marks, texts like \`"red"\` do. ::: -`,I9=`--- +`,B9=`--- titel: Buttons and joystick bereich: Sensors and decisions kurz: The mBot2 waits for you and can be remote controlled. @@ -50898,7 +52540,7 @@ Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can - [ ] Without a pause the mBot2 drives backwards. > The loop checks every 100 milliseconds, that is plenty. ::: -`,k9=`--- +`,O9=`--- titel: Emergency brake with break bereich: Sensors and decisions kurz: An endless loop with a Break: the mBot2 keeps driving until the emergency brake kicks in. @@ -51128,7 +52770,7 @@ Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can - [ ] \`for (;;) break;\` > \`true\` is always true, the loop only stops with \`break\`. ::: -`,S9=`--- +`,M9=`--- titel: The light sensor bereich: Sensors and decisions kurz: Bright or dark? The mBot2 becomes a night light. @@ -51292,7 +52934,162 @@ Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can - [x] 0 to 100 - [ ] -100 to 100 ::: -`,T9=`--- +`,Z9=`--- +titel: A flag with boolean +bereich: Sensors and decisions +kurz: Use a variable of type boolean to remember whether something happened. +--- + +## Skills I will gain now + +::: kompetenzen +- create a variable of type \`boolean\` +- use a flag to remember whether something happened +- check a flag in a condition after the loop +::: + +## True or false + +A variable of type \`boolean\` knows only two values: \`true\` and \`false\`. You already know this from the sensors: \`mbot.isButtonA()\` gives you \`true\` or \`false\`. A comparison like \`mbot.getDistance() < 10\` is also \`true\` or \`false\` in the end. + +| Code | Meaning | +|---|---| +| \`boolean dark = false\` | It has not been dark yet. | +| \`dark = true\` | Now it has been dark. | +| \`if (dark)\` | Is \`dark\` true? | + +With \`if (dark)\` you don't need \`== true\`. The variable itself is already true or false. + +## The flag + +The mBot2 should keep watch for three seconds. It measures the brightness again and again. Afterwards it should say whether it was dark **at any point**. + +For this you use a **flag**: a \`boolean\` variable that starts with \`false\`. When it gets dark, you set it to \`true\`. After that nobody sets it back. So after the loop you know: was it dark even just once? + +::: übung vb-wurde-es-dunkel +titel: Did it get dark? +auftrag: Build a structure chart: create \`boolean dark = false\`. In a for loop, check 30 times: if the brightness is less than 20, \`dark\` becomes true. Wait 100 ms in every pass. Then show **It was dark** or **Always bright**. +messwerte: getBrightness=80/10/80 -> none, screen "It was dark" +messwerte: getBrightness=80 -> none, screen "Always bright" +braucht: forSchleife, verzweigung +tipp: Inside the loop is a branch with \`mbot.getBrightness() < 20\`. The yes branch has \`dark = true\`, the no branch stays empty. Then comes \`mbot.pause(100)\`. +tipp: After the loop comes a second branch with the condition \`dark\`. Yes: \`mbot.showText("It was dark")\`, no: \`mbot.showText("Always bright")\`. +lösung: vb-wurde-es-dunkel-loesung.visustruct +::: + +> When checking, it gets dark for a moment in the middle of the watch and then bright again. Does your mBot2 still show **It was dark**? + +## Now in Java: was there a clap? + +In Java the flag looks like this: + +\`\`\`java +boolean loud = false; +for (int i = 0; i < 30; i++) { + if (mbot.getLoudness() > 60) { + loud = true; + } + mbot.pause(100); +} +\`\`\` + +In Java you always write \`true\` and \`false\` in lower case. + +::: übung vb-java-klatsch-merker +titel: Was there a clap? +code: java +auftrag: Write in Java: the mBot2 listens for three seconds (30 times with a 100 ms pause). If the loudness is ever greater than 60, it remembers this in \`boolean loud\`. Then it shows **Clap!** or **All quiet**. +messwerte: getLoudness=0/90/0 -> none, screen "Clap!" +messwerte: getLoudness=0 -> none, screen "All quiet" +braucht: forSchleife, verzweigung +tipp: Take the code above and then write \`if (loud) { … } else { … }\`. +tipp: The branches get \`mbot.showText("Clap!");\` and \`mbot.showText("All quiet");\`. +lösung: vb-java-klatsch-merker-loesung.visustruct +::: + +::: übung vb-fehler-11-merker-boolean +titel: Why doesn't it run? +code: java +auftrag: Ludwig typed in "Was there a clap?", but the program does not run. "Open in editor" shows the code in the Code area. Click "Run" and read the error message. Fix the mistake and click Check. +start: vb-fehler-11-merker-boolean-start.visustruct +messwerte: getLoudness=0/90/0 -> none, screen "Clap!" +messwerte: getLoudness=0 -> none, screen "All quiet" +tipp: The error message names an unknown variable. How do you write true and false in Java? Java is case-sensitive. +tipp: It should be \`loud = true\`. +lösung: vb-java-klatsch-merker-loesung.visustruct +::: + +## Game: true or false? + +::: spiel frage +titel: Game: true or false? +intro: Ludwig asks what the condition comes out as. Six rounds. +frage: Is it true or false? +antworten: true | false + +runde: +frage: \`mbot.getDistance() < 10\`, the distance is 25 cm. +richtig: false +> 25 is not less than 10. + +runde: +frage: \`mbot.isButtonA()\`, and you are pressing button A right now. +richtig: true +> The sensor reports: pressed. + +runde: +frage: \`boolean dark = false\`. It never gets dark in the loop. What is \`dark\` afterwards? +richtig: false +> Nobody set the flag to \`true\`. + +runde: +frage: \`boolean dark = false\`. It gets dark once in the loop, then bright again. What is \`dark\` afterwards? +richtig: true +> A flag stays \`true\` once it has been set. + +runde: +frage: \`mbot.getBrightness() > 50\`, the brightness is 50. +richtig: false +> 50 is not greater than 50. + +runde: +frage: \`!mbot.isButtonA()\`, and you are not pressing button A. +richtig: true +> Button A is not pressed, so \`false\`. The \`!\` turns it around: \`true\`. +::: + +## Checklist + +Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can do this confidently. For ⛅ and ☂️, **Review** helps you. Then comes the quiz. It shows you whether your self-assessment is right. + +::: checkliste +- I can create a variable of type \`boolean\`. → True or false +- I can use a flag to remember whether something happened. → The flag +- I can check a flag in a condition after the loop. → Now in Java: was there a clap? +::: + +## Quiz + +::: quiz +? Which values can a variable of type \`boolean\` have? +→ True or false +- [ ] Any whole number +- [x] Only \`true\` and \`false\` +- [ ] Only 0 and 1 +? What does a flag start with? +→ The flag +- [x] With \`false\`, because nothing has happened yet +- [ ] With \`true\` +- [ ] With the first reading +> Only when the event happens does it become \`true\`. +? How do you check in Java whether the flag \`loud\` is true? +→ Now in Java: was there a clap? +- [x] \`if (loud)\` +- [ ] \`if (loud = true)\` +- [ ] \`if loud\` +> \`loud\` itself is already true or false. A single \`=\` would be an assignment. +::: +`,L9=`--- titel: The microphone bereich: Sensors and decisions kurz: Clap to start, and a noise light for the classroom. @@ -51455,7 +53252,7 @@ Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can - [ ] The mBot2 drives off. > 30 is less than 50, the condition is true, the loop keeps running. ::: -`,_9=`--- +`,W9=`--- titel: The motion sensor bereich: Sensors and decisions kurz: Measure tilt and detect shaking. @@ -51639,7 +53436,7 @@ Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can - [x] It reports whether someone is shaking the mBot2. > Sensors don't do anything, they only measure. ::: -`,j9=`--- +`,E9=`--- titel: The LEDs bereich: Light, sound and screen kurz: Mix colours, build a traffic light and make it blink. @@ -51855,7 +53652,7 @@ Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can - [ ] Otherwise the LEDs break. - [ ] Because \`ledOff()\` doesn't work otherwise. ::: -`,C9=`--- +`,N9=`--- titel: Single LEDs bereich: Light, sound and screen kurz: Each of the five LEDs gets its own colour, all the way to a running light. @@ -52064,7 +53861,7 @@ Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can - [x] Only LED 4 goes off. - [ ] Four LEDs go off. ::: -`,A9=`--- +`,F9=`--- titel: The speaker bereich: Light, sound and screen kurz: Tones, a scale and a siren. @@ -52231,7 +54028,7 @@ Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can - [ ] 1000 seconds > 1000 milliseconds are one second. ::: -`,P9=`--- +`,R9=`--- titel: Arrays and melodies bereich: Light, sound and screen kurz: Store many values in one array and work through them with a loop. @@ -52475,7 +54272,7 @@ Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can - [ ] 330 > \`length\` counts the slots, here three. That is why the last slot has the number 2. ::: -`,D9=`--- +`,J9=`--- titel: The screen bereich: Light, sound and screen kurz: Show text, numbers and sensor values on the CyberPi. @@ -52681,7 +54478,7 @@ Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can - [x] It is replaced. - [ ] The new one appears below it. ::: -`,B9=`--- +`,G9=`--- titel: Strings bereich: Light, sound and screen kurz: Work with texts, pick out letters and show them on the screen. @@ -52873,7 +54670,7 @@ Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can - [ ] \`g\` > Characters are counted from 0. Character 0 is the first one. ::: -`,O9=`--- +`,H9=`--- titel: Motors and speed bereich: Motors and methods kurz: Step on the gas, steer and follow a line. @@ -53044,7 +54841,7 @@ Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can - [ ] \`mbot.drive(-40, -40)\` > If the left wheel turns faster, it drives a right curve. ::: -`,M9=`--- +`,V9=`--- titel: Stopwatch and battery bereich: Motors and methods kurz: Measure time and keep an eye on the battery. @@ -53217,7 +55014,167 @@ Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can - [ ] Because otherwise the stopwatch stops. > Stepping on the gas still applies while it waits. ::: -`,Z9=`--- +`,q9=`--- +titel: States: what am I doing right now? +bereich: Motors and methods +kurz: Switch a robo traffic light on with a state variable and a switch. +--- + +## Skills I will gain now + +::: kompetenzen +- explain what a state is +- act depending on the state with a switch and change to the next state +- tell states apart in Java with names and \`.equals\` +::: + +## What is a state? + +A traffic light is always in exactly one **state**: red, green or yellow. In each state it knows two things: what do I show? And what comes next? + +Our robo traffic light has three states. Each gets a number: + +| State | LEDs | next | +|---|---|---| +| 0 | red | 1 | +| 1 | green | 2 | +| 2 | yellow | 0 | + +You store the current state in a variable: \`int state = 0\`. A variable like this is called a **state variable**. A program that jumps from state to state like this is called a **state machine**. + +> A real traffic light in Germany has four states: red, red-yellow, green, yellow. Our robo traffic light leaves out red-yellow. + +::: angeberwissen +A robot vacuum is a state machine too: vacuuming, avoiding, driving back to the charging station. I only have two states: eating and sleeping. +::: + +## The robo traffic light in the structure chart + +The switch fits perfectly: there is one case for each state. Each case has two boxes: what do I do? And which state comes next? + +::: übung vb-ampel-zustand +titel: Robo traffic light +auftrag: Build a structure chart: create \`int state = 0\`. A for loop runs six times. Inside it is a switch on \`state\`. Case 0: LEDs red, \`state = 1\`. Case 1: LEDs green, \`state = 2\`. Otherwise: LEDs yellow, \`state = 0\`. After the switch the mBot2 waits one second. +befehle: 2 x (setLed 255 0 0, pause 1000, setLed 0 255 0, pause 1000, setLed 255 200 0, pause 1000) +braucht: forSchleife, fallauswahl +tipp: You will find the switch among the Elements. Write \`state\` into it. The cases are called 0, 1 and default. +tipp: The colours are \`mbot.setLed(255, 0, 0)\` for red, \`mbot.setLed(0, 255, 0)\` for green and \`mbot.setLed(255, 200, 0)\` for yellow. Below the switch, still inside the loop, is \`mbot.pause(1000)\`. +lösung: vb-ampel-zustand-loesung.visustruct +::: + +> 📘 **More without the robot:** VisuStruct has the lesson ["Switch"](?visustruct&lektion=10-fallauswahl). It opens in a new window. + +## Now in Java: states with names + +Numbers are easy to forget. What was state 2 again? Names are easier to read. Then the state is a text: + +\`\`\`java +String state = "red"; +... +if (state.equals("red")) { + mbot.setLed(255, 0, 0); + state = "green"; +} else if (state.equals("green")) { + ... +\`\`\` + +In Java you compare texts with \`.equals("…")\`, not with \`==\`. + +::: übung vb-java-ampel-text +titel: Traffic light with names +code: java +auftrag: Write the robo traffic light in Java with \`String state = "red";\`. Use \`if\` and \`else if\` to check which state the light is in: red, then green, then yellow, then red again. The loop runs six times, with a 1 second pause after each pass. +befehle: 2 x (setLed 255 0 0, pause 1000, setLed 0 255 0, pause 1000, setLed 255 200 0, pause 1000) +braucht: forSchleife, verzweigung +tipp: Inside the loop: \`if (state.equals("red")) { … } else if (state.equals("green")) { … } else { … }\` and then \`mbot.pause(1000);\`. +tipp: In the red case are \`mbot.setLed(255, 0, 0);\` and \`state = "green";\`. Green switches to \`"yellow"\`, yellow back to \`"red"\`. +lösung: vb-java-ampel-text-loesung.visustruct +::: + +::: übung vb-fehler-21-zustaende +titel: Why doesn't it run? +code: java +auftrag: Ludwig typed in "Traffic light with names", but the program does not run. "Open in editor" shows the code in the Code area. Click "Run" and read the error message. Fix the mistake and click Check. +start: vb-fehler-21-zustaende-start.visustruct +befehle: 2 x (setLed 255 0 0, pause 1000, setLed 0 255 0, pause 1000, setLed 255 200 0, pause 1000) +tipp: A text belongs in quotation marks. Without them Java looks for a variable with that name. +tipp: It should be \`state = "green"\`. +lösung: vb-java-ampel-text-loesung.visustruct +::: + +## States while driving + +The mBot2 can also drive with states. In the state **drive** it drives forward. When it sees a wall, it changes to the state **turn**. There it turns once and changes back to **drive**. + +::: diagramm vb-l21z-ausweichen.visustruct +Driving and avoiding with two states. Open the diagram in the editor and try it out in a world. +::: + +## Game: which state comes now? + +::: spiel frage +titel: Game: which state comes now? +intro: The robo traffic light switches: 0 red → 1 green → 2 yellow → 0 red. Which state comes next? Five rounds. +frage: Which state comes next? +antworten: 0 | 1 | 2 + +runde: +frage: The light is in state **0** (red) right now. +richtig: 1 +> After red comes green. + +runde: +frage: The light is in state **2** (yellow) right now. +richtig: 0 +> After yellow it starts all over again. + +runde: +frage: The light is in state **1** (green) right now. +richtig: 2 +> After green comes yellow. + +runde: +frage: The light starts in state 0 and switches on **twice**. +richtig: 2 +> 0 → 1 → 2. + +runde: +frage: The light starts in state 0 and switches on **three times**. +richtig: 0 +> 0 → 1 → 2 → 0. After three steps it is back at the start. +::: + +## Checklist + +Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can do this confidently. For ⛅ and ☂️, **Review** helps you. Then comes the quiz. It shows you whether your self-assessment is right. + +::: checkliste +- I can explain what a state is. → What is a state? +- I can act depending on the state with a switch and change to the next state. → The robo traffic light in the structure chart +- I can tell states apart in Java with names and \`.equals\`. → Now in Java: states with names +::: + +## Quiz + +::: quiz +? What does a state variable store? +→ What is a state? +- [ ] How often the loop has run +- [x] What the program is doing right now, for example red or green +- [ ] The biggest reading +? What is in each case of the switch? +→ The robo traffic light in the structure chart +- [x] What to do and which state comes next +- [ ] Only a pause +- [ ] A new loop +? How do you check in Java whether \`state\` contains the text \`"red"\`? +→ Now in Java: states with names +- [ ] \`state == red\` +- [x] \`state.equals("red")\` +- [ ] \`state = "red"\` +> You compare texts with \`.equals\`. A single \`=\` would assign \`"red"\`. +::: +`,Q9=`--- titel: Your own methods bereich: Motors and methods kurz: Write and call your own commands with parameters and return values. @@ -53551,7 +55508,7 @@ Rate yourself honestly for each point: ☂️ not yet, ⛅ partly, ☀️ I can - [ ] \`static\` > Instead of \`void\`, the header names the data type of the result. ::: -`,L9=`## 🤖 mBot2 commands +`,U9=`## 🤖 mBot2 commands A command tells the mBot2 what to **do**. Every command starts with \`mbot.\` and ends with brackets. Often you write a number in the brackets. @@ -53719,7 +55676,7 @@ With **🔌 mBot2** next to "Start simulation" you connect the real robot with t ### Driving without a cable With **⬆ Upload** you save your program on the mBot2. Then unplug the cable, put the mBot2 at the start and press **button A**: it drives your program on its own. It stays saved until you upload a new one. Keyboard inputs do not work on the mBot2. -`,W9=`--- +`,Y9=`--- titel: Die Alarmanlage nach: 16 stufe: 2 @@ -53738,7 +55695,7 @@ tipp: Außen steht eine While-Schleife mit \`!mbot.isButtonB()\`. Darin eine Ver tipp: Die Bedingung der Verzweigung: \`mbot.getDistance() < 20 || mbot.getLoudness() > 60\`. Im true-Zweig \`mbot.setLed(255, 0, 0)\` und \`mbot.playTone(880, 200)\`, im false-Zweig \`mbot.ledOff()\`. lösung: vb-alarmanlage-loesung.visustruct ::: -`,E9=`--- +`,$9=`--- titel: Labyrinth mit Ausgängen nach: 5 stufe: 3 @@ -53757,7 +55714,7 @@ tipp: In jedem Durchlauf dreht sich der mBot2 zuerst nach links und misst. Ist o tipp: Durch die Lücke sind es zwei Felder bis in den nächsten Gang. Danach soll er wieder nach rechts schauen. Ist oben eine Wand, dreht er sich zurück und fährt ein Feld weiter. lösung: vb-ausgang-loesung.visustruct ::: -`,N9=`--- +`,K9=`--- titel: Binär zählen nach: 15 stufe: 3 @@ -53782,7 +55739,7 @@ tipp: Ob LED 0 an ist, verrät der Rest beim Teilen durch 2: \`zahl % 2 == 1\`. tipp: In der Schleife stehen drei Verzweigungen und danach **kurz warten**. Im true-Zweig zum Beispiel \`mbot.led(0).setColor("grün")\`, im false-Zweig \`mbot.led(0).setColor("aus")\`. lösung: vb-binaer-zaehlen-loesung.visustruct ::: -`,F9=`--- +`,X9=`--- titel: Das Dreieck nach: 2 stufe: 1 @@ -53805,7 +55762,7 @@ lösung: vb-dreieck-loesung.visustruct ::: angeberwissen Die Idee, mit einem fahrenden Roboter Figuren zu zeichnen, ist über 50 Jahre alt: Ende der 1960er-Jahre entstand die Sprache **Logo**. Kinder steuerten damit eine „Schildkröte“, die mit einem Stift über das Papier fuhr. ::: -`,R9=`--- +`,e5=`--- titel: Rückwärts einparken nach: 16 stufe: 2 @@ -53825,7 +55782,7 @@ tipp: Zwei While-Schleifen hintereinander: erst \`!mbot.getColor().equals("blau" tipp: Am Ende: \`mbot.setLed(0, 255, 0)\` und \`mbot.showText("Geparkt!")\`. lösung: vb-einparken-loesung.visustruct ::: -`,J9='---\ntitel: Hindernis ausweichen\nnach: 16\nstufe: 2\n---\n\nAuf dem Weg zum roten Feld stehen Klötze im Weg. Der mBot2 fährt in 10-cm-Schritten vor. Taucht ein Klotz auf (näher als 20 cm), warnt er mit Licht und Ton und fährt außen herum: nach rechts drehen, 30 cm vor, nach links drehen. Dann geht es weiter geradeaus.\n\n::: übung vb-hindernis\ntitel: Hindernis ausweichen\nauftrag: Der mBot2 fährt, solange er nicht auf Rot steht. Ist ein Klotz näher als 20 cm, leuchten die LEDs orange (`mbot.setLed(255, 128, 0)`), er piept und weicht aus. Danach gehen die LEDs aus. Sonst fährt er 10 cm vor. Es gibt zwei Welten.\nwelt: hindernis-1 -> tone\nwelt: hindernis-2 -> tone\nbraucht: whileSchleife, verzweigung\ntipp: Außen eine While-Schleife mit `!mbot.getColor().equals("rot")`, darin eine Verzweigung mit `mbot.getDistance() < 20`.\ntipp: Im true-Zweig: `mbot.setLed(255, 128, 0)`, `mbot.playTone(880, 200)`, `mbot.turnRight()`, `mbot.forward(30)`, `mbot.turnLeft()`, `mbot.ledOff()`. Im false-Zweig: `mbot.forward()`.\nlösung: vb-hindernis-loesung.visustruct\n:::\n',G9=`--- +`,t5='---\ntitel: Hindernis ausweichen\nnach: 16\nstufe: 2\n---\n\nAuf dem Weg zum roten Feld stehen Klötze im Weg. Der mBot2 fährt in 10-cm-Schritten vor. Taucht ein Klotz auf (näher als 20 cm), warnt er mit Licht und Ton und fährt außen herum: nach rechts drehen, 30 cm vor, nach links drehen. Dann geht es weiter geradeaus.\n\n::: übung vb-hindernis\ntitel: Hindernis ausweichen\nauftrag: Der mBot2 fährt, solange er nicht auf Rot steht. Ist ein Klotz näher als 20 cm, leuchten die LEDs orange (`mbot.setLed(255, 128, 0)`), er piept und weicht aus. Danach gehen die LEDs aus. Sonst fährt er 10 cm vor. Es gibt zwei Welten.\nwelt: hindernis-1 -> tone\nwelt: hindernis-2 -> tone\nbraucht: whileSchleife, verzweigung\ntipp: Außen eine While-Schleife mit `!mbot.getColor().equals("rot")`, darin eine Verzweigung mit `mbot.getDistance() < 20`.\ntipp: Im true-Zweig: `mbot.setLed(255, 128, 0)`, `mbot.playTone(880, 200)`, `mbot.turnRight()`, `mbot.forward(30)`, `mbot.turnLeft()`, `mbot.ledOff()`. Im false-Zweig: `mbot.forward()`.\nlösung: vb-hindernis-loesung.visustruct\n:::\n',n5=`--- titel: Knight Rider nach: 15 stufe: 2 @@ -53842,7 +55799,7 @@ tipp: Die erste Schleife zählt \`i\` von 0 bis 4 hoch. Die zweite startet bei 3 tipp: In beiden Schleifen: \`mbot.led(i).setColor("rot")\`, \`mbot.pause(100)\`, \`mbot.led(i).setColor("aus")\`. lösung: vb-knight-rider-loesung.visustruct ::: -`,H9=`--- +`,i5=`--- titel: Das Labyrinth nach: 5 stufe: 2 @@ -53867,7 +55824,7 @@ lösung: vb-labyrinth-loesung.visustruct ::: angeberwissen Mit der Regel „Hand immer an der Wand“ findet man aus jedem Labyrinth, dessen Wände alle zusammenhängen. Schon die Griechen erzählten von Theseus, der sich im Labyrinth des Minotaurus mit einem Wollfaden half. ::: -`,V9='---\ntitel: Linienfolger mit Stopp\nnach: 20\nstufe: 3\n---\n\nDer mBot2 folgt einer schwarzen Linie und hält am roten Feld an ihrem Ende an.\n\nDafür gibt er mit **Räder einzeln** Gas: `mbot.drive(40, 40)` lässt beide Räder gleich schnell drehen, er fährt geradeaus weiter, bis ein anderer Fahrbefehl kommt. `mbot.drive(10, 40)` macht eine Linkskurve, `mbot.drive(40, 10)` eine Rechtskurve. `mbot.stop()` hält ihn an.\n\nDie beiden mittleren Fühler des Liniensensors fragst du mit `mbot.isLineLeft()` und `mbot.isLineRight()` ab. Sehen beide die Linie, fährt er geradeaus. Sieht nur der linke sie, lenkt er nach links, sieht nur der rechte sie, nach rechts.\n\n::: übung vb-linienfolger-stopp\ntitel: Linienfolger mit Stopp\nauftrag: Solange der mBot2 nicht auf Rot steht, folgt er der Linie. Danach hält er an. In der zweiten Welt schlängelt sich die Linie.\nwelt: linie-rot-1, linie-rot-2\nbraucht: whileSchleife, verzweigung\ntipp: Außen eine While-Schleife mit `!mbot.getColor().equals("rot")`, danach **anhalten**.\ntipp: In der Schleife: Sind `mbot.isLineLeft() && mbot.isLineRight()`, dann `mbot.drive(40, 40)`. Sonst, wenn `mbot.isLineLeft()`, dann `mbot.drive(10, 40)`. Sonst, wenn `mbot.isLineRight()`, dann `mbot.drive(40, 10)`.\nlösung: vb-linienfolger-stopp-loesung.visustruct\n:::\n',q9=`--- +`,a5='---\ntitel: Linienfolger mit Stopp\nnach: 20\nstufe: 3\n---\n\nDer mBot2 folgt einer schwarzen Linie und hält am roten Feld an ihrem Ende an.\n\nDafür gibt er mit **Räder einzeln** Gas: `mbot.drive(40, 40)` lässt beide Räder gleich schnell drehen, er fährt geradeaus weiter, bis ein anderer Fahrbefehl kommt. `mbot.drive(10, 40)` macht eine Linkskurve, `mbot.drive(40, 10)` eine Rechtskurve. `mbot.stop()` hält ihn an.\n\nDie beiden mittleren Fühler des Liniensensors fragst du mit `mbot.isLineLeft()` und `mbot.isLineRight()` ab. Sehen beide die Linie, fährt er geradeaus. Sieht nur der linke sie, lenkt er nach links, sieht nur der rechte sie, nach rechts.\n\n::: übung vb-linienfolger-stopp\ntitel: Linienfolger mit Stopp\nauftrag: Solange der mBot2 nicht auf Rot steht, folgt er der Linie. Danach hält er an. In der zweiten Welt schlängelt sich die Linie.\nwelt: linie-rot-1, linie-rot-2\nbraucht: whileSchleife, verzweigung\ntipp: Außen eine While-Schleife mit `!mbot.getColor().equals("rot")`, danach **anhalten**.\ntipp: In der Schleife: Sind `mbot.isLineLeft() && mbot.isLineRight()`, dann `mbot.drive(40, 40)`. Sonst, wenn `mbot.isLineLeft()`, dann `mbot.drive(10, 40)`. Sonst, wenn `mbot.isLineRight()`, dann `mbot.drive(40, 10)`.\nlösung: vb-linienfolger-stopp-loesung.visustruct\n:::\n',s5=`--- titel: Morsen nach: 15 stufe: 2 @@ -53884,7 +55841,7 @@ tipp: Drei For-Schleifen hintereinander, jede läuft dreimal. Dazwischen steht j tipp: In der ersten und dritten Schleife: \`mbot.led(2).setColor("weiß")\`, \`mbot.pause(200)\`, \`mbot.led(2).setColor("aus")\`, \`mbot.pause(200)\`. In der mittleren wartet er nach dem Einschalten 600. lösung: vb-morsen-loesung.visustruct ::: -`,Q9=`--- +`,r5=`--- titel: Der Nachtwächter nach: 18 stufe: 1 @@ -53902,7 +55859,7 @@ tipp: Eine While-Schleife mit \`mbot.getBrightness() < 20\`. Darin \`mbot.forwar tipp: Nach der Schleife steht \`mbot.showText("Zzz")\`. lösung: vb-nachtwaechter-loesung.visustruct ::: -`,U9=`--- +`,o5=`--- titel: Slalom nach: 2 stufe: 2 @@ -53921,7 +55878,7 @@ tipp: Überlege zuerst, wie der mBot2 oben um einen einzigen Pylon herumfährt: tipp: Unten herum geht genauso, nur mit links und rechts vertauscht. „Oben herum, dann unten herum“ wiederholt sich zweimal. lösung: vb-slalom-loesung.visustruct ::: -`,Y9=`--- +`,l5=`--- titel: Die Spirale nach: 2 stufe: 2 @@ -53940,7 +55897,7 @@ tipp: Lass die Zählvariable von 1 bis 8 laufen. Wie lang ist dann die Seite in tipp: In der Klammer von **fahre vor** steht eine Rechnung mit der Zählvariable. lösung: vb-spirale-loesung.visustruct ::: -`,$9=`--- +`,u5=`--- titel: Die Treppe nach: 2 stufe: 1 @@ -53957,7 +55914,7 @@ tipp: Schreib zuerst eine Stufe auf. Dann packst du sie in eine For-Schleife, di tipp: In der Schleife: \`mbot.forward(20)\`, \`mbot.turnLeft()\`, \`mbot.forward(20)\`, \`mbot.turnRight()\`. lösung: vb-treppe-loesung.visustruct ::: -`,K9=`--- +`,m5=`--- titel: Der Tunnelsucher nach: 5 stufe: 3 @@ -53978,7 +55935,7 @@ tipp: In jedem Durchlauf fährt der mBot2 ein Feld vor und schaut sich dann nach tipp: Hier passt eine Schleife, die erst fährt und danach prüft. Sie läuft weiter, solange links **oder** rechts mindestens 20 cm frei ist: \`links >= 20 || rechts >= 20\`. lösung: vb-tunnel-loesung.visustruct ::: -`,X9=`--- +`,c5=`--- titel: Kleeblatt im Wald nach: 5 stufe: 2 @@ -53997,7 +55954,7 @@ tipp: Wie bei „Fahre bis zum Ziel“ läuft außen eine Schleife, bis der Lini tipp: Um einen Baum herum: nach links drehen, ein Feld vor, nach rechts drehen, zwei Felder vor, nach rechts drehen, ein Feld vor, nach links drehen. lösung: vb-wald-loesung.visustruct ::: -`,e5=`--- +`,d5=`--- titel: The alarm system nach: 16 stufe: 2 @@ -54016,7 +55973,7 @@ tipp: On the outside is a while loop with \`!mbot.isButtonB()\`. Inside a branch tipp: The condition of the branch: \`mbot.getDistance() < 20 || mbot.getLoudness() > 60\`. In the true branch \`mbot.setLed(255, 0, 0)\` and \`mbot.playTone(880, 200)\`, in the false branch \`mbot.ledOff()\`. lösung: vb-alarmanlage-loesung.visustruct ::: -`,t5=`--- +`,h5=`--- titel: Maze with exits nach: 5 stufe: 3 @@ -54035,7 +55992,7 @@ tipp: In each pass the mBot2 first turns left and measures. If the way up is fre tipp: Through the gap it is two squares into the next corridor. Afterwards it should face right again. If there is a wall above, it turns back and drives one square further. lösung: vb-ausgang-loesung.visustruct ::: -`,n5=`--- +`,g5=`--- titel: Counting in binary nach: 15 stufe: 3 @@ -54060,7 +56017,7 @@ tipp: Whether LED 0 is on is given by the remainder when dividing by 2: \`number tipp: The loop contains three branches and then **wait a moment**. In the true branch, for example, \`mbot.led(0).setColor("green")\`, in the false branch \`mbot.led(0).setColor("off")\`. lösung: vb-binaer-zaehlen-loesung.visustruct ::: -`,i5=`--- +`,p5=`--- titel: The triangle nach: 2 stufe: 1 @@ -54083,7 +56040,7 @@ lösung: vb-dreieck-loesung.visustruct ::: angeberwissen The idea of drawing shapes with a driving robot is more than 50 years old: the language **Logo** was created in the late 1960s. Children used it to steer a "turtle" that rolled across paper with a pen. ::: -`,a5=`--- +`,f5=`--- titel: Reverse parking nach: 16 stufe: 2 @@ -54103,7 +56060,7 @@ tipp: Two while loops one after the other: first \`!mbot.getColor().equals("blue tipp: At the end: \`mbot.setLed(0, 255, 0)\` and \`mbot.showText("Parked!")\`. lösung: vb-einparken-loesung.visustruct ::: -`,s5='---\ntitel: Avoid obstacles\nnach: 16\nstufe: 2\n---\n\nOn the way to the red field there are blocks in the way. The mBot2 drives forward in steps of 10 cm. If a block shows up (closer than 20 cm), it warns with light and sound and drives around it: turn right, 30 cm forward, turn left. Then it carries on straight ahead.\n\n::: übung vb-hindernis\ntitel: Avoid obstacles\nauftrag: The mBot2 drives as long as it is not on red. If a block is closer than 20 cm, the LEDs light up orange (`mbot.setLed(255, 128, 0)`), it beeps and drives around it. Then the LEDs go off. Otherwise it drives forward 10 cm. There are two worlds.\nwelt: hindernis-1 -> tone\nwelt: hindernis-2 -> tone\nbraucht: whileSchleife, verzweigung\ntipp: On the outside a while loop with `!mbot.getColor().equals("red")`, inside a branch with `mbot.getDistance() < 20`.\ntipp: In the true branch: `mbot.setLed(255, 128, 0)`, `mbot.playTone(880, 200)`, `mbot.turnRight()`, `mbot.forward(30)`, `mbot.turnLeft()`, `mbot.ledOff()`. In the false branch: `mbot.forward()`.\nlösung: vb-hindernis-loesung.visustruct\n:::\n',r5=`--- +`,b5='---\ntitel: Avoid obstacles\nnach: 16\nstufe: 2\n---\n\nOn the way to the red field there are blocks in the way. The mBot2 drives forward in steps of 10 cm. If a block shows up (closer than 20 cm), it warns with light and sound and drives around it: turn right, 30 cm forward, turn left. Then it carries on straight ahead.\n\n::: übung vb-hindernis\ntitel: Avoid obstacles\nauftrag: The mBot2 drives as long as it is not on red. If a block is closer than 20 cm, the LEDs light up orange (`mbot.setLed(255, 128, 0)`), it beeps and drives around it. Then the LEDs go off. Otherwise it drives forward 10 cm. There are two worlds.\nwelt: hindernis-1 -> tone\nwelt: hindernis-2 -> tone\nbraucht: whileSchleife, verzweigung\ntipp: On the outside a while loop with `!mbot.getColor().equals("red")`, inside a branch with `mbot.getDistance() < 20`.\ntipp: In the true branch: `mbot.setLed(255, 128, 0)`, `mbot.playTone(880, 200)`, `mbot.turnRight()`, `mbot.forward(30)`, `mbot.turnLeft()`, `mbot.ledOff()`. In the false branch: `mbot.forward()`.\nlösung: vb-hindernis-loesung.visustruct\n:::\n',x5=`--- titel: Knight Rider nach: 15 stufe: 2 @@ -54120,7 +56077,7 @@ tipp: The first loop counts \`i\` up from 0 to 4. The second starts at 3 and cou tipp: In both loops: \`mbot.led(i).setColor("red")\`, \`mbot.pause(100)\`, \`mbot.led(i).setColor("off")\`. lösung: vb-knight-rider-loesung.visustruct ::: -`,o5=`--- +`,v5=`--- titel: The maze nach: 5 stufe: 2 @@ -54145,7 +56102,7 @@ lösung: vb-labyrinth-loesung.visustruct ::: angeberwissen With the rule "always keep one hand on the wall" you get out of any maze whose walls are all connected. The ancient Greeks already told of Theseus, who found his way through the Minotaur's labyrinth with a ball of thread. ::: -`,l5='---\ntitel: Line follower with stop\nnach: 20\nstufe: 3\n---\n\nThe mBot2 follows a black line and stops at the red field at its end.\n\nFor this it steps on the gas with **wheels separately**: `mbot.drive(40, 40)` turns both wheels equally fast, it keeps driving straight ahead until another driving command comes. `mbot.drive(10, 40)` makes a left curve, `mbot.drive(40, 10)` a right curve. `mbot.stop()` stops it.\n\nYou ask the two middle probes of the line sensor with `mbot.isLineLeft()` and `mbot.isLineRight()`. If both see the line, it drives straight ahead. If only the left one sees it, it steers left, if only the right one sees it, right.\n\n::: übung vb-linienfolger-stopp\ntitel: Line follower with stop\nauftrag: As long as the mBot2 is not on red, it follows the line. Then it stops. In the second world the line winds about.\nwelt: linie-rot-1, linie-rot-2\nbraucht: whileSchleife, verzweigung\ntipp: On the outside a while loop with `!mbot.getColor().equals("red")`, after it **stop**.\ntipp: Inside the loop: if `mbot.isLineLeft() && mbot.isLineRight()`, then `mbot.drive(40, 40)`. Otherwise, if `mbot.isLineLeft()`, then `mbot.drive(10, 40)`. Otherwise, if `mbot.isLineRight()`, then `mbot.drive(40, 10)`.\nlösung: vb-linienfolger-stopp-loesung.visustruct\n:::\n',u5=`--- +`,y5='---\ntitel: Line follower with stop\nnach: 20\nstufe: 3\n---\n\nThe mBot2 follows a black line and stops at the red field at its end.\n\nFor this it steps on the gas with **wheels separately**: `mbot.drive(40, 40)` turns both wheels equally fast, it keeps driving straight ahead until another driving command comes. `mbot.drive(10, 40)` makes a left curve, `mbot.drive(40, 10)` a right curve. `mbot.stop()` stops it.\n\nYou ask the two middle probes of the line sensor with `mbot.isLineLeft()` and `mbot.isLineRight()`. If both see the line, it drives straight ahead. If only the left one sees it, it steers left, if only the right one sees it, right.\n\n::: übung vb-linienfolger-stopp\ntitel: Line follower with stop\nauftrag: As long as the mBot2 is not on red, it follows the line. Then it stops. In the second world the line winds about.\nwelt: linie-rot-1, linie-rot-2\nbraucht: whileSchleife, verzweigung\ntipp: On the outside a while loop with `!mbot.getColor().equals("red")`, after it **stop**.\ntipp: Inside the loop: if `mbot.isLineLeft() && mbot.isLineRight()`, then `mbot.drive(40, 40)`. Otherwise, if `mbot.isLineLeft()`, then `mbot.drive(10, 40)`. Otherwise, if `mbot.isLineRight()`, then `mbot.drive(40, 10)`.\nlösung: vb-linienfolger-stopp-loesung.visustruct\n:::\n',w5=`--- titel: Morse code nach: 15 stufe: 2 @@ -54162,7 +56119,7 @@ tipp: Three for loops one after the other, each runs three times. Between them t tipp: In the first and third loop: \`mbot.led(2).setColor("white")\`, \`mbot.pause(200)\`, \`mbot.led(2).setColor("off")\`, \`mbot.pause(200)\`. In the middle one it waits 600 after switching on. lösung: vb-morsen-loesung.visustruct ::: -`,m5=`--- +`,z5=`--- titel: The night watchman nach: 18 stufe: 1 @@ -54180,7 +56137,7 @@ tipp: A while loop with \`mbot.getBrightness() < 20\`. Inside \`mbot.forward(30) tipp: After the loop is \`mbot.showText("Zzz")\`. lösung: vb-nachtwaechter-loesung.visustruct ::: -`,c5=`--- +`,I5=`--- titel: Slalom nach: 2 stufe: 2 @@ -54199,7 +56156,7 @@ tipp: First think about how the mBot2 drives around a single cone on the top sid tipp: Around the bottom works the same way, only with left and right swapped. "Top, then bottom" repeats twice. lösung: vb-slalom-loesung.visustruct ::: -`,d5=`--- +`,k5=`--- titel: The spiral nach: 2 stufe: 2 @@ -54218,7 +56175,7 @@ tipp: Let the counter variable run from 1 to 8. How long is the side in each pas tipp: The brackets of **drive forward** contain a calculation with the counter variable. lösung: vb-spirale-loesung.visustruct ::: -`,h5=`--- +`,S5=`--- titel: The staircase nach: 2 stufe: 1 @@ -54235,7 +56192,7 @@ tipp: Write down one step first. Then put it into a for loop that runs three tim tipp: Inside the loop: \`mbot.forward(20)\`, \`mbot.turnLeft()\`, \`mbot.forward(20)\`, \`mbot.turnRight()\`. lösung: vb-treppe-loesung.visustruct ::: -`,g5=`--- +`,T5=`--- titel: The tunnel finder nach: 5 stufe: 3 @@ -54256,7 +56213,7 @@ tipp: In each pass the mBot2 drives one square forward and then looks left and r tipp: A loop that drives first and checks afterwards fits here. It keeps going as long as at least 20 cm are free on the left **or** on the right: \`left >= 20 || right >= 20\`. lösung: vb-tunnel-loesung.visustruct ::: -`,p5=`--- +`,_5=`--- titel: Clover in the forest nach: 5 stufe: 2 @@ -54275,7 +56232,7 @@ tipp: As in "Drive to the goal", a loop on the outside runs until the line senso tipp: Around a tree: turn left, one square forward, turn right, two squares forward, turn right, one square forward, turn left. lösung: vb-wald-loesung.visustruct ::: -`,f5=` +`,j5=` 111;117;116;112;117;116;58;32;34;87;105;108;108;107;111;109;109;101;110;34; @@ -54287,7 +56244,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;65;117;102;32;87;105;101;100;101;114;115;101;104;101;110;34; -`,b5=` +`,A5=` 105;110;112;117;116;58;32;105;110;116;32;97;108;116;101;114;32;34;87;105;101;32;97;108;116;32;98;105;115;116;32;100;117;63;34; @@ -54306,7 +56263,7 @@ lösung: vb-wald-loesung.visustruct -`,x5=` +`,C5=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;108;101;115;101;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;98;97;108;108;119;117;114;102;46;99;115;118;34;41;41; @@ -54387,7 +56344,7 @@ lösung: vb-wald-loesung.visustruct 97;117;115;46;99;108;111;115;101;40;41; -`,v5=` +`,D5=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;108;101;115;101;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;98;97;108;108;119;117;114;102;46;99;115;118;34;41;41; @@ -54396,7 +56353,7 @@ lösung: vb-wald-loesung.visustruct 83;116;114;105;110;103;32;122;101;105;108;101;32;61;32;108;101;115;101;114;46;114;101;97;100;76;105;110;101;40;41; -`,y5=` +`,P5=` 105;110;116;91;93;32;112;117;110;107;116;101;32;61;32;110;101;119;32;105;110;116;91;53;93; @@ -54461,7 +56418,7 @@ lösung: vb-wald-loesung.visustruct -`,w5=` +`,B5=` 105;110;112;117;116;58;32;105;110;116;32;122;97;104;108;32;34;71;97;110;122;101;32;90;97;104;108;32;101;105;110;103;101;98;101;110;34; @@ -54487,7 +56444,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;98;105;110;97;101;114; -`,z5=` +`,O5=` 99;104;97;114;91;93;32;97;108;112;104;97;98;101;116;32;61;32;123;39;65;39;44;32;39;66;39;44;32;39;67;39;44;32;39;68;39;44;32;39;69;39;44;32;39;70;39;44;32;39;71;39;44;32;39;72;39;44;32;39;73;39;44;32;39;74;39;44;32;39;75;39;44;32;39;76;39;44;32;39;77;39;44;32;39;78;39;44;32;39;79;39;44;32;39;80;39;44;32;39;81;39;44;32;39;82;39;44;32;39;83;39;44;32;39;84;39;44;32;39;85;39;44;32;39;86;39;44;32;39;87;39;44;32;39;88;39;44;32;39;89;39;44;32;39;90;39;125; @@ -54541,13 +56498,13 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;103;101;104;101;105;109; -`,I5=` +`,M5=` 99;104;97;114;91;93;32;97;108;112;104;97;98;101;116;32;61;32;123;39;65;39;44;32;39;66;39;44;32;39;67;39;44;32;39;68;39;44;32;39;69;39;44;32;39;70;39;44;32;39;71;39;44;32;39;72;39;44;32;39;73;39;44;32;39;74;39;44;32;39;75;39;44;32;39;76;39;44;32;39;77;39;44;32;39;78;39;44;32;39;79;39;44;32;39;80;39;44;32;39;81;39;44;32;39;82;39;44;32;39;83;39;44;32;39;84;39;44;32;39;85;39;44;32;39;86;39;44;32;39;87;39;44;32;39;88;39;44;32;39;89;39;44;32;39;90;39;125; -`,k5=` +`,Z5=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;119;111;114;116;32;34;87;101;108;99;104;101;115;32;87;111;114;116;32;40;110;117;114;32;71;114;111;223;98;117;99;104;115;116;97;98;101;110;41;63;34; @@ -54578,7 +56535,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;103;101;104;101;105;109; -`,S5=` +`,L5=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;103;101;104;101;105;109;32;34;87;101;108;99;104;101;114;32;71;101;104;101;105;109;116;101;120;116;63;34; @@ -54609,7 +56566,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;107;108;97;114;116;101;120;116; -`,T5=` +`,W5=` 105;110;112;117;116;58;32;105;110;116;32;122;97;104;108;32;34;83;116;97;114;116;122;97;104;108;32;101;105;110;103;101;98;101;110;34; @@ -54645,7 +56602,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;99;104;114;105;116;116;101;58;32;34;32;43;32;115;99;104;114;105;116;116;101; -`,_5=` +`,E5=` 105;110;112;117;116;58;32;105;110;116;32;97;110;122;97;104;108;32;34;87;105;101;32;118;105;101;108;101;32;78;111;116;101;110;63;34; @@ -54673,7 +56630,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;115;99;104;110;105;116;116; -`,j5=` +`,N5=` 105;110;112;117;116;58;32;105;110;116;32;97;110;122;97;104;108;32;34;87;105;101;32;118;105;101;108;101;32;90;97;104;108;101;110;63;34; @@ -54710,7 +56667,7 @@ lösung: vb-wald-loesung.visustruct -`,C5=` +`,F5=` 105;110;112;117;116;58;32;105;110;116;32;122;97;104;108;32;34;90;97;104;108;32;101;105;110;103;101;98;101;110;34; @@ -54729,7 +56686,7 @@ lösung: vb-wald-loesung.visustruct -`,A5=` +`,R5=` 99;111;110;115;116;32;100;111;117;98;108;101;32;77;87;83;84;32;61;32;48;46;49;57; @@ -54750,7 +56707,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;98;114;117;116;116;111;112;114;101;105;115; -`,P5=` +`,J5=` 105;110;116;32;112;105;110;32;61;32;48; @@ -54786,7 +56743,7 @@ lösung: vb-wald-loesung.visustruct -`,D5=` +`,G5=` 99;111;110;115;116;32;105;110;116;32;80;73;78;32;61;32;49;50;51;52; @@ -54822,7 +56779,7 @@ lösung: vb-wald-loesung.visustruct -`,B5=` +`,H5=` 105;110;112;117;116;58;32;105;110;116;32;122;97;104;108;49;32;34;69;114;115;116;101;32;90;97;104;108;34; @@ -54866,7 +56823,7 @@ lösung: vb-wald-loesung.visustruct -`,O5=` +`,V5=` 98;111;111;108;101;97;110;91;93;91;93;32;109;101;101;114;32;61;32;110;101;119;32;98;111;111;108;101;97;110;91;53;93;91;53;93; @@ -54920,7 +56877,7 @@ lösung: vb-wald-loesung.visustruct -`,M5=` +`,q5=` 98;111;111;108;101;97;110;91;93;91;93;32;109;101;101;114;32;61;32;110;101;119;32;98;111;111;108;101;97;110;91;53;93;91;53;93; @@ -54947,7 +56904,7 @@ lösung: vb-wald-loesung.visustruct 83;116;114;105;110;103;91;93;32;115;112;97;108;116;101;110;32;61;32;123;34;65;34;44;32;34;66;34;44;32;34;67;34;44;32;34;68;34;44;32;34;69;34;125; -`,Z5=` +`,Q5=` 105;110;112;117;116;58;32;105;110;116;32;110;117;109;109;101;114;32;34;87;101;108;99;104;101;115;32;71;101;114;105;99;104;116;63;32;40;49;44;32;50;32;111;100;101;114;32;51;41;34; @@ -54976,7 +56933,7 @@ lösung: vb-wald-loesung.visustruct -`,L5=` +`,U5=` 105;110;116;32;122;97;104;108;49;32;61;32;52; @@ -54991,7 +56948,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;115;117;109;109;101; -`,W5=` +`,Y5=` 83;116;114;105;110;103;91;93;32;110;97;109;101;110;32;61;32;110;101;119;32;83;116;114;105;110;103;91;53;93; @@ -55013,7 +56970,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;84;97;102;101;108;100;105;101;110;115;116;58;32;34;32;43;32;110;97;109;101;110;91;110;117;109;109;101;114;32;45;32;49;93; -`,E5=` +`,$5=` 105;110;116;32;122;97;104;108;32;61;32;52; @@ -55025,7 +56982,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;86;101;114;100;111;112;112;101;108;116;101;32;90;97;104;108;58;32;34;32;43;32;122;97;104;108; -`,N5=` +`,K5=` -1; @@ -55072,7 +57029,7 @@ lösung: vb-wald-loesung.visustruct -`,F5=` +`,X5=` @@ -55109,7 +57066,7 @@ lösung: vb-wald-loesung.visustruct -`,R5=` +`,ez=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;108;101;115;101;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;118;111;107;97;98;101;108;110;46;99;115;118;34;41;41; @@ -55169,7 +57126,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;114;105;99;104;116;105;103;32;43;32;34;32;118;111;110;32;34;32;43;32;97;110;122;97;104;108;32;43;32;34;32;114;105;99;104;116;105;103;34; -`,J5=` +`,tz=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;108;101;115;101;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;118;111;107;97;98;101;108;110;46;99;115;118;34;41;41; @@ -55178,7 +57135,7 @@ lösung: vb-wald-loesung.visustruct 83;116;114;105;110;103;32;122;101;105;108;101;32;61;32;108;101;115;101;114;46;114;101;97;100;76;105;110;101;40;41; -`,G5=` +`,nz=` 105;110;112;117;116;58;32;105;110;116;32;97;108;116;101;114;32;34;87;105;101;32;97;108;116;32;98;105;115;116;32;100;117;63;34; @@ -55197,7 +57154,7 @@ lösung: vb-wald-loesung.visustruct -`,H5=` +`,iz=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;108;101;115;101;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;108;111;103;98;117;99;104;46;116;120;116;34;41;41; @@ -55220,7 +57177,7 @@ lösung: vb-wald-loesung.visustruct 108;101;115;101;114;46;99;108;111;115;101;40;41; -`,V5=` +`,az=` 83;116;114;105;110;103;32;122;101;105;108;101;32;61;32;34;90;111;114;97;59;49;59;50;59;50;34; @@ -55238,7 +57195,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;110;97;109;101;32;43;32;34;32;104;97;116;32;105;110;32;77;97;116;104;101;32;101;105;110;101;32;34;32;43;32;109;97;116;104;101; -`,q5=` +`,sz=` 83;116;114;105;110;103;32;122;101;105;108;101;32;61;32;34;123;92;34;110;97;109;101;92;34;58;32;92;34;90;111;114;97;92;34;44;32;92;34;97;114;116;92;34;58;32;92;34;90;105;101;103;101;92;34;44;32;92;34;97;108;116;101;114;92;34;58;32;54;125;44;34; @@ -55256,7 +57213,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;110;97;109;101; -`,Q5=` +`,rz=` 83;99;97;110;110;101;114;32;100;97;116;101;105;32;61;32;110;101;119;32;83;99;97;110;110;101;114;40;110;101;119;32;70;105;108;101;40;34;101;105;110;107;97;117;102;46;116;120;116;34;41;41; @@ -55276,7 +57233,7 @@ lösung: vb-wald-loesung.visustruct 100;97;116;101;105;46;99;108;111;115;101;40;41; -`,U5=` +`,oz=` 111;117;116;112;117;116;58;32;34;87;101;108;99;111;109;101;34; @@ -55288,7 +57245,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;71;111;111;100;98;121;101;34; -`,Y5=` +`,lz=` 105;110;112;117;116;58;32;105;110;116;32;97;103;101;32;34;72;111;119;32;111;108;100;32;97;114;101;32;121;111;117;63;34; @@ -55307,7 +57264,7 @@ lösung: vb-wald-loesung.visustruct -`,$5=` +`,uz=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;114;101;97;100;101;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;116;104;114;111;119;46;99;115;118;34;41;41; @@ -55388,7 +57345,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;46;99;108;111;115;101;40;41; -`,K5=` +`,mz=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;114;101;97;100;101;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;116;104;114;111;119;46;99;115;118;34;41;41; @@ -55397,7 +57354,7 @@ lösung: vb-wald-loesung.visustruct 83;116;114;105;110;103;32;108;105;110;101;32;61;32;114;101;97;100;101;114;46;114;101;97;100;76;105;110;101;40;41; -`,X5=` +`,cz=` 105;110;116;91;93;32;112;111;105;110;116;115;32;61;32;110;101;119;32;105;110;116;91;53;93; @@ -55462,7 +57419,7 @@ lösung: vb-wald-loesung.visustruct -`,ez=` +`,dz=` 105;110;112;117;116;58;32;105;110;116;32;110;117;109;98;101;114;32;34;69;110;116;101;114;32;97;32;119;104;111;108;101;32;110;117;109;98;101;114;34; @@ -55488,7 +57445,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;98;105;110;97;114;121; -`,tz=` +`,hz=` 99;104;97;114;91;93;32;97;108;112;104;97;98;101;116;32;61;32;123;39;65;39;44;32;39;66;39;44;32;39;67;39;44;32;39;68;39;44;32;39;69;39;44;32;39;70;39;44;32;39;71;39;44;32;39;72;39;44;32;39;73;39;44;32;39;74;39;44;32;39;75;39;44;32;39;76;39;44;32;39;77;39;44;32;39;78;39;44;32;39;79;39;44;32;39;80;39;44;32;39;81;39;44;32;39;82;39;44;32;39;83;39;44;32;39;84;39;44;32;39;85;39;44;32;39;86;39;44;32;39;87;39;44;32;39;88;39;44;32;39;89;39;44;32;39;90;39;125; @@ -55542,13 +57499,13 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;115;101;99;114;101;116; -`,nz=` +`,gz=` 99;104;97;114;91;93;32;97;108;112;104;97;98;101;116;32;61;32;123;39;65;39;44;32;39;66;39;44;32;39;67;39;44;32;39;68;39;44;32;39;69;39;44;32;39;70;39;44;32;39;71;39;44;32;39;72;39;44;32;39;73;39;44;32;39;74;39;44;32;39;75;39;44;32;39;76;39;44;32;39;77;39;44;32;39;78;39;44;32;39;79;39;44;32;39;80;39;44;32;39;81;39;44;32;39;82;39;44;32;39;83;39;44;32;39;84;39;44;32;39;85;39;44;32;39;86;39;44;32;39;87;39;44;32;39;88;39;44;32;39;89;39;44;32;39;90;39;125; -`,iz=` +`,pz=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;119;111;114;100;32;34;87;104;105;99;104;32;119;111;114;100;32;40;99;97;112;105;116;97;108;32;108;101;116;116;101;114;115;32;111;110;108;121;41;63;34; @@ -55579,7 +57536,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;115;101;99;114;101;116; -`,az=` +`,fz=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;115;101;99;114;101;116;32;34;87;104;105;99;104;32;115;101;99;114;101;116;32;116;101;120;116;63;34; @@ -55610,7 +57567,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;112;108;97;105;110; -`,sz=` +`,bz=` 105;110;112;117;116;58;32;105;110;116;32;110;117;109;98;101;114;32;34;69;110;116;101;114;32;97;32;115;116;97;114;116;32;110;117;109;98;101;114;34; @@ -55646,7 +57603,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;116;101;112;115;58;32;34;32;43;32;115;116;101;112;115; -`,rz=` +`,xz=` 105;110;112;117;116;58;32;105;110;116;32;99;111;117;110;116;32;34;72;111;119;32;109;97;110;121;32;103;114;97;100;101;115;63;34; @@ -55674,7 +57631,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;97;118;101;114;97;103;101; -`,oz=` +`,vz=` 105;110;112;117;116;58;32;105;110;116;32;99;111;117;110;116;32;34;72;111;119;32;109;97;110;121;32;110;117;109;98;101;114;115;63;34; @@ -55711,7 +57668,7 @@ lösung: vb-wald-loesung.visustruct -`,lz=` +`,yz=` 105;110;112;117;116;58;32;105;110;116;32;110;117;109;98;101;114;32;34;69;110;116;101;114;32;97;32;110;117;109;98;101;114;34; @@ -55730,7 +57687,7 @@ lösung: vb-wald-loesung.visustruct -`,uz=` +`,wz=` 99;111;110;115;116;32;100;111;117;98;108;101;32;86;65;84;32;61;32;48;46;49;57; @@ -55751,7 +57708,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;103;114;111;115;115;80;114;105;99;101; -`,mz=` +`,zz=` 105;110;116;32;112;105;110;32;61;32;48; @@ -55787,7 +57744,7 @@ lösung: vb-wald-loesung.visustruct -`,cz=` +`,Iz=` 99;111;110;115;116;32;105;110;116;32;80;73;78;32;61;32;49;50;51;52; @@ -55823,7 +57780,7 @@ lösung: vb-wald-loesung.visustruct -`,dz=` +`,kz=` 105;110;112;117;116;58;32;105;110;116;32;110;117;109;98;101;114;49;32;34;70;105;114;115;116;32;110;117;109;98;101;114;34; @@ -55867,7 +57824,7 @@ lösung: vb-wald-loesung.visustruct -`,hz=` +`,Sz=` 98;111;111;108;101;97;110;91;93;91;93;32;115;101;97;32;61;32;110;101;119;32;98;111;111;108;101;97;110;91;53;93;91;53;93; @@ -55921,7 +57878,7 @@ lösung: vb-wald-loesung.visustruct -`,gz=` +`,Tz=` 98;111;111;108;101;97;110;91;93;91;93;32;115;101;97;32;61;32;110;101;119;32;98;111;111;108;101;97;110;91;53;93;91;53;93; @@ -55948,7 +57905,7 @@ lösung: vb-wald-loesung.visustruct 83;116;114;105;110;103;91;93;32;99;111;108;117;109;110;115;32;61;32;123;34;65;34;44;32;34;66;34;44;32;34;67;34;44;32;34;68;34;44;32;34;69;34;125; -`,pz=` +`,_z=` 105;110;112;117;116;58;32;105;110;116;32;112;105;99;107;32;34;87;104;105;99;104;32;100;105;115;104;63;32;40;49;44;32;50;32;111;114;32;51;41;34; @@ -55977,7 +57934,7 @@ lösung: vb-wald-loesung.visustruct -`,fz=` +`,jz=` 105;110;116;32;110;117;109;98;101;114;49;32;61;32;52; @@ -55992,7 +57949,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;115;117;109; -`,bz=` +`,Az=` 83;116;114;105;110;103;91;93;32;110;97;109;101;115;32;61;32;110;101;119;32;83;116;114;105;110;103;91;53;93; @@ -56014,7 +57971,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;66;111;97;114;100;32;100;117;116;121;58;32;34;32;43;32;110;97;109;101;115;91;112;105;99;107;32;45;32;49;93; -`,xz=` +`,Cz=` 105;110;116;32;110;117;109;98;101;114;32;61;32;52; @@ -56026,7 +57983,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;68;111;117;98;108;101;100;32;110;117;109;98;101;114;58;32;34;32;43;32;110;117;109;98;101;114; -`,vz=` +`,Dz=` -1; @@ -56073,7 +58030,7 @@ lösung: vb-wald-loesung.visustruct -`,yz=` +`,Pz=` @@ -56110,7 +58067,7 @@ lösung: vb-wald-loesung.visustruct -`,wz=` +`,Bz=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;114;101;97;100;101;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;119;111;114;100;115;46;99;115;118;34;41;41; @@ -56170,7 +58127,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;114;105;103;104;116;32;43;32;34;32;111;102;32;34;32;43;32;99;111;117;110;116;32;43;32;34;32;114;105;103;104;116;34; -`,zz=` +`,Oz=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;114;101;97;100;101;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;119;111;114;100;115;46;99;115;118;34;41;41; @@ -56179,7 +58136,7 @@ lösung: vb-wald-loesung.visustruct 83;116;114;105;110;103;32;108;105;110;101;32;61;32;114;101;97;100;101;114;46;114;101;97;100;76;105;110;101;40;41; -`,Iz=` +`,Mz=` 105;110;112;117;116;58;32;105;110;116;32;97;103;101;32;34;72;111;119;32;111;108;100;32;97;114;101;32;121;111;117;63;34; @@ -56198,7 +58155,7 @@ lösung: vb-wald-loesung.visustruct -`,kz=` +`,Zz=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;114;101;97;100;101;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;108;111;103;98;111;111;107;46;116;120;116;34;41;41; @@ -56221,7 +58178,7 @@ lösung: vb-wald-loesung.visustruct 114;101;97;100;101;114;46;99;108;111;115;101;40;41; -`,Sz=` +`,Lz=` 83;116;114;105;110;103;32;108;105;110;101;32;61;32;34;90;111;114;97;59;49;59;50;59;50;34; @@ -56239,7 +58196,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;110;97;109;101;32;43;32;34;32;103;111;116;32;97;32;34;32;43;32;109;97;116;104;115;32;43;32;34;32;105;110;32;109;97;116;104;115;34; -`,Tz=` +`,Wz=` 83;116;114;105;110;103;32;108;105;110;101;32;61;32;34;123;92;34;110;97;109;101;92;34;58;32;92;34;90;111;114;97;92;34;44;32;92;34;115;112;101;99;105;101;115;92;34;58;32;92;34;103;111;97;116;92;34;44;32;92;34;97;103;101;92;34;58;32;54;125;44;34; @@ -56257,7 +58214,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;110;97;109;101; -`,_z=` +`,Ez=` 83;99;97;110;110;101;114;32;102;105;108;101;32;61;32;110;101;119;32;83;99;97;110;110;101;114;40;110;101;119;32;70;105;108;101;40;34;115;104;111;112;112;105;110;103;46;116;120;116;34;41;41; @@ -56277,7 +58234,7 @@ lösung: vb-wald-loesung.visustruct 102;105;108;101;46;99;108;111;115;101;40;41; -`,jz=` +`,Nz=` 105;110;116;91;93;91;93;32;116;97;98;108;101;32;61;32;110;101;119;32;105;110;116;91;49;48;93;91;49;48;93; @@ -56309,7 +58266,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;97;32;43;32;34;32;183;32;34;32;43;32;98;32;43;32;34;32;61;32;34;32;43;32;116;97;98;108;101;91;97;32;45;32;49;93;91;98;32;45;32;49;93; -`,Cz=` +`,Fz=` 98;111;111;108;101;97;110;91;93;91;93;32;115;101;97;116;115;32;61;32;110;101;119;32;98;111;111;108;101;97;110;91;51;93;91;53;93; @@ -56357,7 +58314,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;70;114;101;101;58;32;34;32;43;32;102;114;101;101; -`,Az=` +`,Rz=` 98;111;111;108;101;97;110;91;93;91;93;32;115;101;97;116;115;32;61;32;110;101;119;32;98;111;111;108;101;97;110;91;51;93;91;53;93; @@ -56372,7 +58329,7 @@ lösung: vb-wald-loesung.visustruct 115;101;97;116;115;91;50;93;91;51;93;32;61;32;116;114;117;101; -`,Pz=` +`,Jz=` 98;111;111;108;101;97;110;91;93;91;93;32;115;101;97;116;115;32;61;32;110;101;119;32;98;111;111;108;101;97;110;91;51;93;91;53;93; @@ -56406,7 +58363,7 @@ lösung: vb-wald-loesung.visustruct -`,Dz=` +`,Gz=` 98;111;111;108;101;97;110;91;93;91;93;32;115;101;97;116;115;32;61;32;110;101;119;32;98;111;111;108;101;97;110;91;51;93;91;53;93; @@ -56424,7 +58381,7 @@ lösung: vb-wald-loesung.visustruct 105;110;112;117;116;58;32;105;110;116;32;115;101;97;116;32;34;83;101;97;116;34; -`,Bz=` +`,Hz=` 98;111;111;108;101;97;110;91;93;91;93;32;115;101;97;116;115;32;61;32;110;101;119;32;98;111;111;108;101;97;110;91;51;93;91;53;93; @@ -56472,7 +58429,7 @@ lösung: vb-wald-loesung.visustruct -`,Oz=` +`,Vz=` 98;111;111;108;101;97;110;91;93;91;93;32;115;101;97;116;115;32;61;32;110;101;119;32;98;111;111;108;101;97;110;91;51;93;91;53;93; @@ -56496,7 +58453,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;82;111;119;32;49;44;32;115;101;97;116;32;50;32;115;111;108;100;63;32;34;32;43;32;115;101;97;116;115;91;49;93;91;50;93; -`,Mz=` +`,qz=` 105;110;116;32;110;117;109;98;101;114;32;61;32;52; @@ -56511,7 +58468,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;82;101;115;117;108;116;58;32;34;32;43;32;114;101;115;117;108;116; -`,Zz=` +`,Qz=` 105;110;116;32;110;117;109;98;101;114;32;61;32;52; @@ -56526,7 +58483,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;82;101;115;117;108;116;58;32;34;32;43;32;114;101;115;117;108;116; -`,Lz=` +`,Uz=` 105;110;116;32;115;101;99;111;110;100;115;32;61;32;50;48;48; @@ -56541,7 +58498,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;109;105;110;117;116;101;115;32;43;32;34;32;109;105;110;32;34;32;43;32;114;101;115;116;32;43;32;34;32;115;34; -`,Wz=` +`,Yz=` 105;110;116;32;115;101;99;111;110;100;115;32;61;32;50;48;48; @@ -56556,7 +58513,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;109;105;110;117;116;101;115;32;43;32;34;32;109;105;110;32;34;32;43;32;114;101;115;116;32;43;32;34;32;115;34; -`,Ez=` +`,$z=` 83;116;114;105;110;103;32;110;97;109;101;32;61;32;34;76;117;100;119;105;103;34; @@ -56568,7 +58525,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;110;97;109;101;32;43;32;34;32;105;115;32;34;32;43;32;97;103;101;32;43;32;34;32;121;101;97;114;115;32;111;108;100;46;34; -`,Nz=` +`,Kz=` 83;116;114;105;110;103;32;110;97;109;101;32;61;32;34;76;117;100;119;105;103;34; @@ -56580,7 +58537,7 @@ lösung: vb-wald-loesung.visustruct 115;121;115;116;101;109;46;111;117;116;46;112;114;105;110;116;108;110;40;110;97;109;101;32;43;32;34;32;105;115;32;34;32;43;32;65;103;101;32;43;32;34;32;121;101;97;114;115;32;111;108;100;46;34;41; -`,Fz=` +`,Xz=` 83;116;114;105;110;103;32;110;97;109;101;32;61;32;34;76;117;100;119;105;103;34; @@ -56598,7 +58555,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;72;101;105;103;104;116;58;32;34;32;43;32;104;101;105;103;104;116;32;43;32;34;32;109;34; -`,Rz=` +`,e6=` 105;110;116;32;110;117;109;98;101;114;32;61;32;51; @@ -56613,7 +58570,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;110;117;109;98;101;114; -`,Jz=` +`,t6=` 105;110;116;32;110;117;109;98;101;114;32;61;32;50; @@ -56628,7 +58585,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;110;117;109;98;101;114; -`,Gz=` +`,n6=` 111;117;116;112;117;116;58;32;110;117;109;98;101;114; @@ -56643,7 +58600,7 @@ lösung: vb-wald-loesung.visustruct 110;117;109;98;101;114;32;61;32;110;117;109;98;101;114;32;43;32;51; -`,Hz=` +`,i6=` 83;116;114;105;110;103;32;108;101;102;116;32;61;32;34;106;117;105;99;101;34; @@ -56667,7 +58624,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;82;105;103;104;116;58;32;34;32;43;32;114;105;103;104;116; -`,Vz=` +`,a6=` 83;116;114;105;110;103;32;108;101;102;116;32;61;32;34;106;117;105;99;101;34; @@ -56682,7 +58639,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;82;105;103;104;116;58;32;34;32;43;32;114;105;103;104;116; -`,qz=` +`,s6=` 105;110;116;32;97;32;61;32;53; @@ -56706,7 +58663,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;98;32;61;32;34;32;43;32;98; -`,Qz=` +`,r6=` 105;110;116;32;97;103;101;32;61;32;49;52; @@ -56724,7 +58681,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;72;101;105;103;104;116;58;32;34;32;43;32;104;101;105;103;104;116;32;43;32;34;32;109;34; -`,Uz=` +`,o6=` 105;110;116;32;109;105;110;117;116;101;115;32;61;32;49;51;53; @@ -56739,7 +58696,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;104;111;117;114;115;32;43;32;34;32;104;111;117;114;115;32;97;110;100;32;34;32;43;32;114;101;109;97;105;110;100;101;114;32;43;32;34;32;109;105;110;117;116;101;115;34; -`,Yz=` +`,l6=` 105;110;116;32;99;111;117;110;116;32;61;32;51; @@ -56754,7 +58711,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;84;111;116;97;108;58;32;34;32;43;32;116;111;116;97;108;80;114;105;99;101;32;43;32;34;32;101;117;114;111;115;34; -`,$z=` +`,u6=` 105;110;116;32;99;114;101;100;105;116;32;61;32;50;48; @@ -56769,7 +58726,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;76;101;102;116;58;32;34;32;43;32;99;114;101;100;105;116; -`,Kz=` +`,m6=` 105;110;116;32;99;114;101;100;105;116;32;61;32;50;48; @@ -56784,7 +58741,7 @@ lösung: vb-wald-loesung.visustruct 99;114;101;100;105;116;32;61;32;99;114;101;100;105;116;32;45;32;112;114;105;99;101; -`,Xz=` +`,c6=` 105;110;116;32;112;114;105;99;101;32;61;32;57; @@ -56799,7 +58756,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;84;111;116;97;108;58;32;34;32;43;32;116;111;116;97;108; -`,e6=` +`,d6=` 105;110;116;32;115;108;105;99;101;115;32;61;32;56; @@ -56814,7 +58771,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;69;118;101;114;121;111;110;101;32;103;101;116;115;32;34;32;43;32;112;101;114;80;101;114;115;111;110;32;43;32;34;32;115;108;105;99;101;115;46;34; -`,t6=` +`,h6=` 105;110;116;32;115;108;105;99;101;115;32;61;32;56; @@ -56829,7 +58786,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;69;118;101;114;121;111;110;101;32;103;101;116;115;32;34;32;43;32;112;101;114;112;101;114;115;111;110;32;43;32;34;32;115;108;105;99;101;115;46;34; -`,n6=` +`,g6=` 105;110;116;32;108;101;110;103;116;104;32;61;32;55; @@ -56850,7 +58807,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;101;114;105;109;101;116;101;114;58;32;34;32;43;32;112;101;114;105;109;101;116;101;114; -`,i6=` +`,p6=` 105;110;116;32;115;101;99;111;110;100;115;32;61;32;50;48;48; @@ -56865,7 +58822,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;109;105;110;117;116;101;115;32;43;32;34;32;109;105;110;117;116;101;115;32;97;110;100;32;34;32;43;32;114;101;109;97;105;110;100;101;114;32;43;32;34;32;115;101;99;111;110;100;115;34; -`,a6=` +`,f6=` 105;110;116;32;115;101;99;111;110;100;115;32;61;32;50;48;48; @@ -56874,7 +58831,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;109;105;110;117;116;101;115;32;43;32;34;32;109;105;110;117;116;101;115;32;97;110;100;32;34;32;43;32;114;101;109;97;105;110;100;101;114;32;43;32;34;32;115;101;99;111;110;100;115;34; -`,s6=` +`,b6=` 105;110;116;32;108;101;110;103;116;104;32;61;32;53; @@ -56889,7 +58846,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;97;114;101;97; -`,r6=` +`,x6=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;110;97;109;101;32;34;87;104;97;116;32;105;115;32;121;111;117;114;32;110;97;109;101;63;34; @@ -56898,7 +58855,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;72;101;108;108;111;32;34;32;43;32;110;97;109;101;32;43;32;34;33;34; -`,o6=` +`,v6=` 105;110;112;117;116;58;32;105;110;116;32;97;32;34;70;105;114;115;116;32;110;117;109;98;101;114;63;34; @@ -56913,7 +58870,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;117;109;58;32;34;32;43;32;115;117;109; -`,l6=` +`,y6=` 105;110;112;117;116;58;32;105;110;116;32;97;32;34;70;105;114;115;116;32;110;117;109;98;101;114;63;34; @@ -56925,7 +58882,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;117;109;58;32;34;32;43;32;40;97;32;43;32;98;41; -`,u6=` +`,w6=` 105;110;112;117;116;58;32;105;110;116;32;97;32;34;70;105;114;115;116;32;110;117;109;98;101;114;63;34; @@ -56937,7 +58894,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;117;109;58;32;34;32;43;32;97;32;43;32;98; -`,m6=` +`,z6=` 105;110;112;117;116;58;32;105;110;116;32;97;103;101;32;34;72;111;119;32;111;108;100;32;97;114;101;32;121;111;117;63;34; @@ -56946,7 +58903,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;78;101;120;116;32;121;101;97;114;32;121;111;117;32;119;105;108;108;32;98;101;32;34;32;43;32;40;97;103;101;32;43;32;49;41; -`,c6=` +`,I6=` 105;110;112;117;116;58;32;105;110;116;32;97;103;101;32;34;72;111;119;32;111;108;100;32;97;114;101;32;121;111;117;63;34; @@ -56955,7 +58912,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;78;101;120;116;32;121;101;97;114;32;121;111;117;32;119;105;108;108;32;98;101;32;34;32;43;32;40;65;103;101;32;43;32;49;41; -`,d6=` +`,k6=` 105;110;112;117;116;58;32;105;110;116;32;121;101;97;114;115;32;34;72;111;119;32;111;108;100;32;97;114;101;32;121;111;117;63;34; @@ -56967,7 +58924,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;84;104;97;116;32;105;115;32;97;98;111;117;116;32;34;32;43;32;100;97;121;115;32;43;32;34;32;100;97;121;115;46;34; -`,h6=` +`,S6=` 105;110;112;117;116;58;32;100;111;117;98;108;101;32;120;32;34;70;105;114;115;116;32;110;117;109;98;101;114;63;34; @@ -56982,7 +58939,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;77;101;97;110;58;32;34;32;43;32;109;101;97;110; -`,g6=` +`,T6=` 105;110;112;117;116;58;32;105;110;116;32;97;32;34;70;105;114;115;116;32;110;117;109;98;101;114;63;34; @@ -57003,7 +58960,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;114;111;100;117;99;116;58;32;34;32;43;32;112;114;111;100;117;99;116; -`,p6=` +`,_6=` 105;110;112;117;116;58;32;105;110;116;32;97;103;101;32;34;72;111;119;32;111;108;100;32;97;114;101;32;121;111;117;63;34; @@ -57022,7 +58979,7 @@ lösung: vb-wald-loesung.visustruct -`,f6=` +`,j6=` 105;110;112;117;116;58;32;105;110;116;32;110;117;109;98;101;114;32;34;78;117;109;98;101;114;63;34; @@ -57044,7 +59001,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;110;117;109;98;101;114; -`,b6=` +`,A6=` 105;110;112;117;116;58;32;105;110;116;32;110;117;109;98;101;114;32;34;78;117;109;98;101;114;63;34; @@ -57063,7 +59020,7 @@ lösung: vb-wald-loesung.visustruct -`,x6=` +`,C6=` 105;110;116;32;112;111;105;110;116;115;32;61;32;48; @@ -57081,7 +59038,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;111;105;110;116;115;58;32;34;32;43;32;112;111;105;110;116;115; -`,v6=` +`,D6=` 105;110;116;32;112;111;105;110;116;115;32;61;32;48; @@ -57099,7 +59056,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;111;105;110;116;115;58;32;34;32;43;32;112;111;105;110;116;115; -`,y6=` +`,P6=` 105;110;116;32;112;111;105;110;116;115;32;61;32;49;48; @@ -57114,7 +59071,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;111;105;110;116;115;58;32;34;32;43;32;112;111;105;110;116;115; -`,w6=` +`,B6=` 105;110;116;32;112;111;105;110;116;115;32;61;32;49;48; @@ -57129,7 +59086,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;111;105;110;116;115;58;32;34;32;43;32;112;111;105;110;116;115; -`,z6=` +`,O6=` 105;110;116;32;112;114;105;99;101;32;61;32;56; @@ -57147,7 +59104,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;84;111;116;97;108;58;32;34;32;43;32;116;111;116;97;108; -`,I6=` +`,M6=` 105;110;116;32;112;114;105;99;101;32;61;32;56; @@ -57165,7 +59122,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;84;111;116;97;108;58;32;34;32;43;32;116;111;116;97;108; -`,k6=` +`,Z6=` 105;110;112;117;116;58;32;105;110;116;32;97;32;34;70;105;114;115;116;32;110;117;109;98;101;114;63;34; @@ -57187,7 +59144,7 @@ lösung: vb-wald-loesung.visustruct -`,S6=` +`,L6=` 105;110;112;117;116;58;32;100;111;117;98;108;101;32;112;114;105;99;101;32;34;80;114;105;99;101;32;105;110;32;101;117;114;111;115;63;34; @@ -57209,7 +59166,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;84;111;32;112;97;121;58;32;34;32;43;32;112;114;105;99;101;32;43;32;34;32;101;117;114;111;115;34; -`,T6=` +`,W6=` 105;110;112;117;116;58;32;105;110;116;32;103;114;97;100;101;32;34;71;114;97;100;101;63;34; @@ -57228,7 +59185,7 @@ lösung: vb-wald-loesung.visustruct -`,_6=` +`,E6=` 105;110;112;117;116;58;32;105;110;116;32;112;111;105;110;116;115;32;34;72;111;119;32;109;97;110;121;32;112;111;105;110;116;115;63;34; @@ -57247,7 +59204,7 @@ lösung: vb-wald-loesung.visustruct -`,j6=` +`,N6=` 105;110;112;117;116;58;32;105;110;116;32;97;103;101;32;34;72;111;119;32;111;108;100;32;97;114;101;32;121;111;117;63;34; @@ -57266,7 +59223,7 @@ lösung: vb-wald-loesung.visustruct -`,C6=` +`,F6=` 105;110;112;117;116;58;32;105;110;116;32;97;103;101;32;34;72;111;119;32;111;108;100;32;97;114;101;32;121;111;117;63;34; @@ -57285,7 +59242,7 @@ lösung: vb-wald-loesung.visustruct -`,A6=` +`,R6=` 105;110;116;32;97;103;101;32;61;32;49;53; @@ -57304,7 +59261,7 @@ lösung: vb-wald-loesung.visustruct -`,P6=` +`,J6=` 105;110;116;32;97;103;101;32;61;32;49;53; @@ -57323,7 +59280,7 @@ lösung: vb-wald-loesung.visustruct -`,D6=` +`,G6=` 105;110;112;117;116;58;32;105;110;116;32;97;103;101;32;34;72;111;119;32;111;108;100;32;97;114;101;32;121;111;117;63;34; @@ -57342,7 +59299,7 @@ lösung: vb-wald-loesung.visustruct -`,B6=` +`,H6=` 105;110;112;117;116;58;32;105;110;116;32;103;114;97;100;101;32;34;71;114;97;100;101;63;34; @@ -57361,7 +59318,7 @@ lösung: vb-wald-loesung.visustruct -`,O6=` +`,V6=` 105;110;112;117;116;58;32;105;110;116;32;121;101;97;114;32;34;89;101;97;114;63;34; @@ -57380,7 +59337,7 @@ lösung: vb-wald-loesung.visustruct -`,M6=` +`,q6=` 105;110;112;117;116;58;32;105;110;116;32;100;97;121;32;34;68;97;121;32;40;49;32;116;111;32;55;41;63;34; @@ -57399,7 +59356,7 @@ lösung: vb-wald-loesung.visustruct -`,Z6=` +`,Q6=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;99;111;108;111;114;32;34;87;104;97;116;32;99;111;108;111;114;32;105;115;32;116;104;101;32;116;114;97;102;102;105;99;32;108;105;103;104;116;63;34; @@ -57428,7 +59385,7 @@ lösung: vb-wald-loesung.visustruct -`,L6=` +`,U6=` 105;110;112;117;116;58;32;105;110;116;32;99;104;111;105;99;101;32;34;49;32;119;97;116;101;114;44;32;50;32;106;117;105;99;101;44;32;51;32;99;111;99;111;97;34; @@ -57457,7 +59414,7 @@ lösung: vb-wald-loesung.visustruct -`,W6=` +`,Y6=` 105;110;112;117;116;58;32;105;110;116;32;100;97;121;32;34;87;104;105;99;104;32;100;97;121;32;40;49;32;116;111;32;55;41;63;34; @@ -57476,7 +59433,7 @@ lösung: vb-wald-loesung.visustruct -`,E6=` +`,$6=` 105;110;112;117;116;58;32;105;110;116;32;100;97;121;32;34;87;104;105;99;104;32;100;97;121;32;40;49;32;116;111;32;55;41;63;34; @@ -57495,7 +59452,7 @@ lösung: vb-wald-loesung.visustruct -`,N6=` +`,K6=` 105;110;116;32;100;97;121;32;61;32;55; @@ -57514,7 +59471,7 @@ lösung: vb-wald-loesung.visustruct -`,F6=` +`,X6=` 105;110;116;32;100;97;121;32;61;32;55; @@ -57533,7 +59490,7 @@ lösung: vb-wald-loesung.visustruct -`,R6=` +`,eI=` 105;110;112;117;116;58;32;105;110;116;32;104;111;117;114;32;34;87;104;97;116;32;116;105;109;101;32;105;115;32;105;116;32;40;106;117;115;116;32;116;104;101;32;104;111;117;114;41;63;34; @@ -57552,7 +59509,7 @@ lösung: vb-wald-loesung.visustruct -`,J6=` +`,tI=` 105;110;112;117;116;58;32;105;110;116;32;103;114;97;100;101;32;34;87;104;105;99;104;32;103;114;97;100;101;63;34; @@ -57596,7 +59553,7 @@ lösung: vb-wald-loesung.visustruct -`,G6=` +`,nI=` 105;110;112;117;116;58;32;105;110;116;32;97;32;34;70;105;114;115;116;32;110;117;109;98;101;114;34; @@ -57643,7 +59600,7 @@ lösung: vb-wald-loesung.visustruct -`,H6=` +`,iI=` 105;110;112;117;116;58;32;105;110;116;32;99;104;111;105;99;101;32;34;49;32;119;97;116;101;114;44;32;50;32;106;117;105;99;101;44;32;51;32;99;111;99;111;97;34; @@ -57682,7 +59639,7 @@ lösung: vb-wald-loesung.visustruct -`,V6=` +`,aI=` 80;117;116;32;97;32;99;117;112;32;111;110;32;116;104;101;32;116;97;98;108;101; @@ -57712,7 +59669,7 @@ lösung: vb-wald-loesung.visustruct 68;114;105;110;107;32;116;104;101;32;116;101;97; -`,q6=` +`,sI=` 71;101;116;32;117;112; @@ -57727,7 +59684,7 @@ lösung: vb-wald-loesung.visustruct 72;97;118;101;32;98;114;101;97;107;102;97;115;116; -`,Q6=` +`,rI=` 70;105;108;108;32;116;104;101;32;107;101;116;116;108;101;32;119;105;116;104;32;119;97;116;101;114; @@ -57748,7 +59705,7 @@ lösung: vb-wald-loesung.visustruct 84;97;107;101;32;111;117;116;32;116;104;101;32;116;101;97;32;98;97;103; -`,U6=` +`,oI=` 73;115;32;105;116;32;114;97;105;110;105;110;103;63; @@ -57767,7 +59724,7 @@ lösung: vb-wald-loesung.visustruct 76;101;97;118;101; -`,Y6=` +`,lI=` 80;108;97;116;101;32;110;111;116;32;101;109;112;116;121; @@ -57781,7 +59738,7 @@ lösung: vb-wald-loesung.visustruct 67;108;101;97;114;32;116;104;101;32;112;108;97;116;101; -`,$6=` +`,uI=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;67;111;117;110;116;32;117;112;32;116;111;63;34; @@ -57801,7 +59758,7 @@ lösung: vb-wald-loesung.visustruct -`,K6=` +`,mI=` 105;110;116;32;110;117;109;98;101;114;32;61;32;51; @@ -57821,7 +59778,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;116;97;114;116;33;34; -`,X6=` +`,cI=` 105;110;116;32;110;117;109;98;101;114;32;61;32;51; @@ -57838,7 +59795,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;116;97;114;116;33;34; -`,eI=` +`,dI=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;70;97;99;116;111;114;105;97;108;32;111;102;32;119;104;105;99;104;32;110;117;109;98;101;114;63;34; @@ -57864,7 +59821,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;110;32;43;32;34;33;32;61;32;34;32;43;32;102;97;99;116;111;114;105;97;108; -`,tI=` +`,hI=` 105;110;112;117;116;58;32;105;110;116;32;97;32;34;70;105;114;115;116;32;110;117;109;98;101;114;63;34; @@ -57899,7 +59856,7 @@ lösung: vb-wald-loesung.visustruct -`,nI=` +`,gI=` 105;110;112;117;116;58;32;105;110;116;32;97;32;34;70;105;114;115;116;32;110;117;109;98;101;114;63;34; @@ -57934,7 +59891,7 @@ lösung: vb-wald-loesung.visustruct -`,iI=` +`,pI=` 105;110;116;32;103;114;97;100;101;32;61;32;50; @@ -57958,7 +59915,7 @@ lösung: vb-wald-loesung.visustruct -`,aI=` +`,fI=` 105;110;116;32;103;114;97;100;101;32;61;32;50; @@ -57982,7 +59939,7 @@ lösung: vb-wald-loesung.visustruct -`,sI=` +`,bI=` 105;110;112;117;116;58;32;105;110;116;32;110;117;109;98;101;114;32;34;87;104;105;99;104;32;110;117;109;98;101;114;63;34; @@ -58011,7 +59968,7 @@ lösung: vb-wald-loesung.visustruct -`,rI=` +`,xI=` 105;110;112;117;116;58;32;105;110;116;32;110;117;109;98;101;114;32;34;83;116;97;114;116;32;110;117;109;98;101;114;34; @@ -58034,7 +59991,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;115;116;101;112;115; -`,oI=` +`,vI=` 105;110;116;32;110;117;109;98;101;114;32;61;32;48; @@ -58051,7 +60008,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;84;104;97;110;107;32;121;111;117;33;34; -`,lI=` +`,yI=` 105;110;116;32;105;32;61;32;49;48; @@ -58068,7 +60025,7 @@ lösung: vb-wald-loesung.visustruct -`,uI=` +`,wI=` 105;110;112;117;116;58;32;105;110;116;32;103;111;97;108;32;34;83;97;118;105;110;103;115;32;103;111;97;108;63;34; @@ -58094,7 +60051,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;87;101;101;107;115;58;32;34;32;43;32;119;101;101;107;115; -`,mI=` +`,zI=` 105;110;112;117;116;58;32;105;110;116;32;103;111;97;108;32;34;83;97;118;105;110;103;115;32;103;111;97;108;63;34; @@ -58120,7 +60077,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;87;101;101;107;115;58;32;34;32;43;32;119;101;101;107;115; -`,cI=` +`,II=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;85;112;32;116;111;32;119;104;101;114;101;63;34; @@ -58140,7 +60097,7 @@ lösung: vb-wald-loesung.visustruct -`,dI=` +`,kI=` 105;110;116;32;110;117;109;98;101;114;32;61;32;51; @@ -58160,7 +60117,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;71;111;33;34; -`,hI=` +`,SI=` 105;110;116;32;110;117;109;98;101;114;32;61;32;51; @@ -58180,7 +60137,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;71;111;33;34; -`,gI=` +`,TI=` 105;110;116;32;103;114;97;100;101;32;61;32;48; @@ -58197,7 +60154,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;89;111;117;114;32;103;114;97;100;101;58;32;34;32;43;32;103;114;97;100;101; -`,pI=` +`,_I=` 105;110;116;32;115;117;109;32;61;32;48; @@ -58220,7 +60177,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;115;117;109; -`,fI=` +`,jI=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;83;116;97;114;116;32;110;117;109;98;101;114;34; @@ -58239,7 +60196,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;71;111;33;34; -`,bI=` +`,AI=` 105;110;112;117;116;58;32;105;110;116;32;110;117;109;98;101;114;32;34;87;104;105;99;104;32;116;105;109;101;115;32;116;97;98;108;101;63;34; @@ -58258,7 +60215,7 @@ lösung: vb-wald-loesung.visustruct -`,xI=` +`,CI=` 105;110;116;32;105;32;61;32;49; @@ -58271,7 +60228,7 @@ lösung: vb-wald-loesung.visustruct -`,vI=` +`,DI=` 105;110;112;117;116;58;32;105;110;116;32;110;117;109;98;101;114;32;34;83;116;97;114;116;32;110;117;109;98;101;114;63;34; @@ -58288,7 +60245,7 @@ lösung: vb-wald-loesung.visustruct -`,yI=` +`,PI=` 105;110;112;117;116;58;32;105;110;116;32;110;117;109;98;101;114;32;34;83;116;97;114;116;32;110;117;109;98;101;114;63;34; @@ -58305,7 +60262,7 @@ lösung: vb-wald-loesung.visustruct -`,wI=` +`,BI=` 105;110;116;32;110;117;109;98;101;114;32;61;32;49; @@ -58325,7 +60282,7 @@ lösung: vb-wald-loesung.visustruct -`,zI=` +`,OI=` 105;110;116;32;110;117;109;98;101;114;32;61;32;49; @@ -58345,7 +60302,7 @@ lösung: vb-wald-loesung.visustruct -`,II=` +`,MI=` 105;110;112;117;116;58;32;105;110;116;32;110;117;109;98;101;114;32;34;83;116;97;114;116;32;110;117;109;98;101;114;63;34; @@ -58362,7 +60319,7 @@ lösung: vb-wald-loesung.visustruct -`,kI=` +`,ZI=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;85;112;32;116;111;32;119;104;105;99;104;32;110;117;109;98;101;114;63;34; @@ -58384,7 +60341,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;115;117;109; -`,SI=` +`,LI=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;72;111;119;32;109;97;110;121;32;108;105;110;101;115;63;34; @@ -58413,7 +60370,7 @@ lösung: vb-wald-loesung.visustruct -`,TI=` +`,WI=` 105;110;116;32;99;111;117;110;116;32;61;32;48; @@ -58445,7 +60402,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;99;111;117;110;116; -`,_I=` +`,EI=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;85;112;32;116;111;32;119;104;105;99;104;32;110;117;109;98;101;114;63;34; @@ -58477,7 +60434,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;99;111;117;110;116; -`,jI=` +`,NI=` 105;110;112;117;116;58;32;105;110;116;32;114;111;119;32;34;87;104;105;99;104;32;116;105;109;101;115;32;116;97;98;108;101;63;34; @@ -58493,7 +60450,7 @@ lösung: vb-wald-loesung.visustruct -`,CI=` +`,FI=` 105;110;112;117;116;58;32;105;110;116;32;114;111;119;32;34;87;104;105;99;104;32;116;105;109;101;115;32;116;97;98;108;101;63;34; @@ -58509,7 +60466,7 @@ lösung: vb-wald-loesung.visustruct -`,AI=` +`,RI=` 105;110;116;32;104;101;105;103;104;116;32;61;32;48; @@ -58528,7 +60485,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;72;101;105;103;104;116;58;32;34;32;43;32;104;101;105;103;104;116;32;43;32;34;32;99;109;34; -`,PI=` +`,JI=` 105;110;116;32;115;116;101;112;32;61;32;49; @@ -58544,7 +60501,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;72;101;105;103;104;116;58;32;34;32;43;32;104;101;105;103;104;116;32;43;32;34;32;99;109;34; -`,DI=` +`,GI=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;85;112;32;116;111;32;119;104;105;99;104;32;110;117;109;98;101;114;63;34; @@ -58560,7 +60517,7 @@ lösung: vb-wald-loesung.visustruct -`,BI=` +`,HI=` 105;110;112;117;116;58;32;105;110;116;32;119;105;100;116;104;32;34;87;105;100;116;104;34; @@ -58592,7 +60549,7 @@ lösung: vb-wald-loesung.visustruct -`,OI=` +`,VI=` 105;110;116;91;93;32;110;117;109;98;101;114;115;32;61;32;123;50;44;32;52;44;32;54;44;32;56;44;32;49;48;125; @@ -58608,7 +60565,7 @@ lösung: vb-wald-loesung.visustruct -`,MI=` +`,qI=` 105;110;116;91;93;32;118;97;108;117;101;115;32;61;32;123;52;44;32;56;44;32;49;53;44;32;49;54;44;32;50;51;44;32;52;50;125; @@ -58623,7 +60580,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;118;97;108;117;101;115;46;108;101;110;103;116;104; -`,ZI=` +`,QI=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;85;112;32;116;111;32;119;104;105;99;104;32;110;117;109;98;101;114;63;34; @@ -58655,7 +60612,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;67;111;117;110;116;58;32;34;32;43;32;99;111;117;110;116; -`,LI=` +`,UI=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;85;112;32;116;111;32;119;104;105;99;104;32;110;117;109;98;101;114;63;34; @@ -58687,7 +60644,7 @@ lösung: vb-wald-loesung.visustruct -`,WI=` +`,YI=` 105;110;116;32;105;32;61;32;49; @@ -58710,7 +60667,7 @@ lösung: vb-wald-loesung.visustruct -`,EI=` +`,$I=` 105;110;116;32;105;32;61;32;49; @@ -58733,7 +60690,7 @@ lösung: vb-wald-loesung.visustruct -`,NI=` +`,KI=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;72;111;119;32;109;97;110;121;32;115;116;101;112;115;63;34; @@ -58762,7 +60719,7 @@ lösung: vb-wald-loesung.visustruct -`,FI=` +`,XI=` 83;116;114;105;110;103;91;93;32;110;97;109;101;115;32;61;32;110;101;119;32;83;116;114;105;110;103;91;51;93; @@ -58781,7 +60738,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;70;105;114;115;116;32;110;97;109;101;58;32;34;32;43;32;110;97;109;101;115;91;48;93; -`,RI=` +`,ek=` 105;110;116;91;93;32;110;117;109;98;101;114;115;32;61;32;110;101;119;32;105;110;116;91;52;93; @@ -58807,7 +60764,7 @@ lösung: vb-wald-loesung.visustruct -`,JI=` +`,tk=` 105;110;116;91;93;32;110;117;109;98;101;114;115;32;61;32;110;101;119;32;105;110;116;91;53;93; @@ -58858,7 +60815,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;77;97;120;105;109;117;109;58;32;34;32;43;32;109;97;120; -`,GI=` +`,nk=` 105;110;116;91;93;32;112;111;105;110;116;115;32;61;32;123;49;50;44;32;55;44;32;49;57;44;32;52;125; @@ -58899,7 +60856,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;77;97;120;105;109;117;109;58;32;34;32;43;32;109;97;120; -`,HI=` +`,ik=` 105;110;116;32;115;117;109;32;61;32;48; @@ -58922,7 +60879,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;117;109;58;32;34;32;43;32;115;117;109; -`,VI=` +`,ak=` 105;110;116;32;115;117;109;32;61;32;48; @@ -58952,7 +60909,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;117;109;58;32;34;32;43;32;115;117;109; -`,qI=` +`,sk=` 105;110;112;117;116;58;32;105;110;116;32;108;101;110;103;116;104;32;34;76;101;110;103;116;104;63;34; @@ -58967,13 +60924,13 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;65;114;101;97;58;32;34;32;43;32;102; -`,QI=` +`,rk=` 114;101;116;117;114;110;32;97;32;42;32;98; -`,UI=` +`,ok=` 115;104;111;119;71;114;101;101;116;105;110;103;40;41; @@ -58985,7 +60942,7 @@ lösung: vb-wald-loesung.visustruct 115;104;111;119;82;101;115;117;108;116;40;41; -`,YI=` +`,lk=` 105;110;116;91;93;32;116;101;109;112;101;114;97;116;117;114;101;115;32;61;32;123;45;53;44;32;45;50;44;32;45;56;44;32;45;51;125; @@ -59017,7 +60974,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;72;105;103;104;101;115;116;32;116;101;109;112;101;114;97;116;117;114;101;58;32;34;32;43;32;109;97;120; -`,$I=` +`,uk=` 105;110;116;91;93;32;116;101;109;112;101;114;97;116;117;114;101;115;32;61;32;123;45;53;44;32;45;50;44;32;45;56;44;32;45;51;125; @@ -59049,7 +61006,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;72;105;103;104;101;115;116;32;116;101;109;112;101;114;97;116;117;114;101;58;32;34;32;43;32;109;97;120; -`,KI=` +`,mk=` 105;110;116;91;93;32;112;111;105;110;116;115;32;61;32;123;52;44;32;55;44;32;50;44;32;53;125; @@ -59071,7 +61028,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;117;109;58;32;34;32;43;32;115;117;109; -`,XI=` +`,ck=` 105;110;116;91;93;32;112;111;105;110;116;115;32;61;32;123;52;44;32;55;44;32;50;44;32;53;125; @@ -59093,7 +61050,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;117;109;58;32;34;32;43;32;115;117;109; -`,ek=` +`,dk=` 105;110;116;91;93;32;103;114;97;100;101;115;32;61;32;123;50;44;32;51;44;32;49;44;32;52;125; @@ -59115,7 +61072,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;117;109;58;32;34;32;43;32;115;117;109; -`,tk=` +`,hk=` 105;110;112;117;116;58;32;105;110;116;32;110;117;109;98;101;114;32;34;87;104;105;99;104;32;110;117;109;98;101;114;63;34; @@ -59127,7 +61084,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;84;104;101;32;115;113;117;97;114;101;32;105;115;32;34;32;43;32;113; -`,nk=` +`,gk=` 105;110;116;32;114;101;115;117;108;116;32;61;32;120;32;42;32;120; @@ -59136,7 +61093,7 @@ lösung: vb-wald-loesung.visustruct 114;101;116;117;114;110;32;114;101;115;117;108;116; -`,ik=` +`,pk=` 115;104;111;119;84;105;116;108;101;40;41; @@ -59148,7 +61105,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;72;101;108;108;111;32;34;32;43;32;110;97;109;101; -`,ak=` +`,fk=` 111;117;116;112;117;116;58;32;34;87;101;108;99;111;109;101;32;116;111;32;116;104;101;32;113;117;105;122;33;34; @@ -59157,7 +61114,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;89;111;117;32;103;101;116;32;116;104;114;101;101;32;113;117;101;115;116;105;111;110;115;46;34; -`,sk=` +`,bk=` 115;104;111;119;83;117;109;40;51;44;32;52;41; @@ -59169,7 +61126,7 @@ lösung: vb-wald-loesung.visustruct 115;104;111;119;83;117;109;40;120;44;32;120;32;43;32;49;41; -`,rk=` +`,xk=` 105;110;116;32;115;117;109;32;61;32;97;32;43;32;98; @@ -59178,7 +61135,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;97;32;43;32;34;32;43;32;34;32;43;32;98;32;43;32;34;32;61;32;34;32;43;32;115;117;109; -`,ok=` +`,vk=` 105;110;112;117;116;58;32;105;110;116;32;115;116;97;114;116;32;34;83;116;97;114;116;32;118;97;108;117;101;34; @@ -59201,7 +61158,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;71;111;33;34; -`,lk=` +`,yk=` 105;110;112;117;116;58;32;105;110;116;32;115;116;97;114;116;32;34;83;116;97;114;116;32;118;97;108;117;101;34; @@ -59224,7 +61181,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;71;111;34; -`,uk=` +`,wk=` 105;110;116;91;93;91;93;32;112;111;105;110;116;115;32;61;32;123;123;51;44;32;53;44;32;50;125;44;32;123;52;44;32;49;44;32;54;125;125; @@ -59246,7 +61203,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;108;97;121;101;114;32;50;58;32;34;32;43;32;116;111;116;97;108; -`,mk=` +`,zk=` 105;110;116;91;93;91;93;32;112;111;105;110;116;115;32;61;32;123;123;51;44;32;53;44;32;50;125;44;32;123;52;44;32;49;44;32;54;125;125; @@ -59268,7 +61225,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;108;97;121;101;114;32;50;58;32;34;32;43;32;116;111;116;97;108; -`,ck=` +`,Ik=` 105;110;116;91;93;91;93;32;112;111;105;110;116;115;32;61;32;123;123;51;44;32;53;125;44;32;123;52;44;32;50;125;125; @@ -59277,7 +61234,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;108;97;121;101;114;32;50;44;32;114;111;117;110;100;32;49;58;32;34;32;43;32;112;111;105;110;116;115;91;49;93;91;48;93; -`,dk=` +`,kk=` 105;110;116;91;93;91;93;32;112;111;105;110;116;115;32;61;32;123;123;51;44;32;53;125;44;32;123;52;44;32;50;125;125; @@ -59286,7 +61243,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;108;97;121;101;114;32;50;44;32;114;111;117;110;100;32;49;58;32;34;32;43;32;80;111;105;110;116;115;91;49;93;91;48;93; -`,hk=` +`,Sk=` 105;110;116;91;93;91;93;32;112;111;105;110;116;115;32;61;32;123;123;51;44;32;53;125;44;32;123;52;44;32;49;125;44;32;123;50;44;32;50;125;125; @@ -59315,7 +61272,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;117;109;58;32;34;32;43;32;115;117;109; -`,gk=` +`,Tk=` 105;110;116;32;115;117;109;32;61;32;48; @@ -59338,7 +61295,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;115;117;109; -`,pk=` +`,_k=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;85;112;32;116;111;32;119;104;105;99;104;32;110;117;109;98;101;114;63;34; @@ -59360,7 +61317,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;115;117;109; -`,fk=` +`,jk=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;85;112;32;116;111;32;119;104;105;99;104;32;110;117;109;98;101;114;63;34; @@ -59382,7 +61339,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;115;117;109; -`,bk=` +`,Ak=` 105;110;112;117;116;58;32;105;110;116;32;110;117;109;98;101;114;32;34;87;104;105;99;104;32;116;105;109;101;115;32;116;97;98;108;101;63;34; @@ -59414,7 +61371,7 @@ lösung: vb-wald-loesung.visustruct -`,xk=` +`,Ck=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;69;110;116;101;114;32;97;32;110;117;109;98;101;114;34; @@ -59436,7 +61393,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;102;97;99;116;111;114;105;97;108; -`,vk=` +`,Dk=` 83;116;114;105;110;103;32;108;101;116;116;101;114;32;61;32;70;105;108;101;115;46;114;101;97;100;83;116;114;105;110;103;40;80;97;116;104;46;111;102;40;34;108;101;116;116;101;114;46;116;120;116;34;41;41; @@ -59468,13 +61425,13 @@ lösung: vb-wald-loesung.visustruct -`,yk=` +`,Pk=` 83;116;114;105;110;103;32;108;101;116;116;101;114;32;61;32;70;105;108;101;115;46;114;101;97;100;83;116;114;105;110;103;40;80;97;116;104;46;111;102;40;34;108;101;116;116;101;114;46;116;120;116;34;41;41; -`,wk=` +`,Bk=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;102;105;114;115;116;32;34;70;105;114;115;116;32;110;97;109;101;63;34; @@ -59486,7 +61443,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;102;105;114;115;116;46;99;104;97;114;65;116;40;48;41;32;43;32;34;46;32;34;32;43;32;108;97;115;116;46;99;104;97;114;65;116;40;48;41;32;43;32;34;46;34; -`,zk=` +`,Ok=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;102;105;114;115;116;32;34;70;105;114;115;116;32;110;97;109;101;63;34; @@ -59498,7 +61455,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;102;105;114;115;116;46;99;104;97;114;65;116;40;49;41;32;43;32;34;46;32;34;32;43;32;108;97;115;116;46;99;104;97;114;65;116;40;49;41;32;43;32;34;46;34; -`,Ik=` +`,Mk=` 83;116;114;105;110;103;32;110;97;109;101;32;61;32;34;76;117;100;119;105;103;34; @@ -59507,7 +61464,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;110;97;109;101;46;99;104;97;114;65;116;40;48;41;32;43;32;34;32;104;97;115;32;34;32;43;32;110;97;109;101;46;108;101;110;103;116;104;40;41;32;43;32;34;32;108;101;116;116;101;114;115;34; -`,kk=` +`,Zk=` 83;116;114;105;110;103;32;110;97;109;101;32;61;32;34;76;117;100;119;105;103;34; @@ -59516,7 +61473,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;110;97;109;101;46;99;104;97;114;97;116;40;48;41;32;43;32;34;32;104;97;115;32;34;32;43;32;110;97;109;101;46;76;101;110;103;116;104;40;41;32;43;32;34;32;108;101;116;116;101;114;115;34; -`,Sk=` +`,Lk=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;105;110;112;117;116;32;34;80;97;115;115;119;111;114;100;63;34; @@ -59535,7 +61492,7 @@ lösung: vb-wald-loesung.visustruct -`,Tk=` +`,Wk=` 105;110;112;117;116;58;32;105;110;116;32;97;103;101;32;34;72;111;119;32;111;108;100;32;97;114;101;32;121;111;117;63;34; @@ -59564,7 +61521,7 @@ lösung: vb-wald-loesung.visustruct -`,_k=` +`,Ek=` 105;110;112;117;116;58;32;105;110;116;32;110;117;109;98;101;114;32;34;83;116;97;114;116;32;118;97;108;117;101;63;34; @@ -59584,7 +61541,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;69;110;100;34; -`,jk=` +`,Nk=` 105;110;116;32;116;114;105;101;115;32;61;32;48; @@ -59617,7 +61574,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;84;114;105;101;115;58;32;34;32;43;32;116;114;105;101;115; -`,Ck=` +`,Fk=` 105;110;116;32;116;114;105;101;115;32;61;32;48; @@ -59650,7 +61607,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;84;114;105;101;115;58;32;34;32;43;32;116;114;105;101;115; -`,Ak=` +`,Rk=` 105;110;116;32;115;117;109;32;61;32;48; @@ -59692,7 +61649,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;84;111;116;97;108;58;32;34;32;43;32;115;117;109; -`,Pk=` +`,Jk=` 105;110;112;117;116;58;32;105;110;116;32;97;103;101;32;34;72;111;119;32;111;108;100;32;97;114;101;32;121;111;117;63;34; @@ -59714,7 +61671,7 @@ lösung: vb-wald-loesung.visustruct -`,Dk=` +`,Gk=` 105;110;112;117;116;58;32;105;110;116;32;108;105;109;105;116;32;34;85;112;32;116;111;32;119;104;105;99;104;32;110;117;109;98;101;114;63;34; @@ -59730,7 +61687,7 @@ lösung: vb-wald-loesung.visustruct -`,Bk=` +`,Hk=` 105;110;116;91;93;32;99;97;114;100;115;32;61;32;123;56;44;32;52;44;32;49;49;44;32;52;44;32;54;125; @@ -59769,7 +61726,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;111;115;105;116;105;111;110;58;32;34;32;43;32;112;111;115;105;116;105;111;110; -`,Ok=` +`,Vk=` 105;110;116;91;93;32;99;97;114;100;115;32;61;32;123;56;44;32;52;44;32;49;49;44;32;52;44;32;54;125; @@ -59808,7 +61765,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;111;115;105;116;105;111;110;58;32;34;32;43;32;112;111;115;105;116;105;111;110; -`,Mk=` +`,qk=` 105;110;116;91;93;32;99;97;114;100;115;32;61;32;123;56;44;32;52;44;32;49;49;44;32;52;44;32;54;125; @@ -59843,7 +61800,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;111;115;105;116;105;111;110;58;32;34;32;43;32;112;111;115;105;116;105;111;110; -`,Zk=` +`,Qk=` 105;110;116;91;93;32;99;97;114;100;115;32;61;32;123;56;44;32;52;44;32;49;49;44;32;52;44;32;54;125; @@ -59878,7 +61835,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;111;115;105;116;105;111;110;58;32;34;32;43;32;112;111;115;105;116;105;111;110; -`,Lk=` +`,Uk=` 105;110;116;91;93;32;99;97;114;100;115;32;61;32;123;56;44;32;52;44;32;49;49;44;32;52;44;32;54;125; @@ -59913,7 +61870,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;67;111;117;110;116;58;32;34;32;43;32;99;111;117;110;116; -`,Wk=` +`,Yk=` 111;117;116;112;117;116;58;32;34;71;111;111;100;32;109;111;114;110;105;110;103;34; @@ -59922,13 +61879,13 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;84;111;100;97;121;32;119;101;32;108;101;97;114;110;32;115;116;114;117;99;116;117;114;101;32;99;104;97;114;116;115;46;34; -`,Ek=` +`,$k=` 111;117;116;112;117;116;58;32;34;72;101;108;108;111;32;87;111;114;108;100;34; -`,Nk=` +`,Kk=` 111;117;116;112;117;116;58;32;34;72;101;108;108;111;34; @@ -59937,7 +61894,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;73;32;97;109;32;108;101;97;114;110;105;110;103;32;115;116;114;117;99;116;117;114;101;32;99;104;97;114;116;115;34; -`,Fk=` +`,Xk=` 83;99;97;110;110;101;114;32;102;105;108;101;32;61;32;110;101;119;32;83;99;97;110;110;101;114;40;110;101;119;32;70;105;108;101;40;34;115;104;111;112;112;105;110;103;46;116;120;116;34;41;41; @@ -59978,7 +61935,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;99;111;117;110;116;32;43;32;34;32;108;105;110;101;115;32;115;97;118;101;100;34; -`,Rk=` +`,e7=` 83;99;97;110;110;101;114;32;102;105;108;101;32;61;32;110;101;119;32;83;99;97;110;110;101;114;40;110;101;119;32;70;105;108;101;40;34;115;104;111;112;112;105;110;103;46;116;120;116;34;41;41; @@ -59987,7 +61944,7 @@ lösung: vb-wald-loesung.visustruct 80;114;105;110;116;87;114;105;116;101;114;32;111;117;116;32;61;32;110;101;119;32;80;114;105;110;116;87;114;105;116;101;114;40;34;115;104;111;112;112;105;110;103;45;110;101;119;46;116;120;116;34;41; -`,Jk=` +`,t7=` 83;99;97;110;110;101;114;32;102;105;108;101;32;61;32;110;101;119;32;83;99;97;110;110;101;114;40;110;101;119;32;70;105;108;101;40;34;115;104;111;112;112;105;110;103;46;116;120;116;34;41;41; @@ -60013,13 +61970,13 @@ lösung: vb-wald-loesung.visustruct 102;105;108;101;46;99;108;111;115;101;40;41; -`,Gk=` +`,n7=` 83;99;97;110;110;101;114;32;102;105;108;101;32;61;32;110;101;119;32;83;99;97;110;110;101;114;40;110;101;119;32;70;105;108;101;40;34;115;104;111;112;112;105;110;103;46;116;120;116;34;41;41; -`,Hk=` +`,i7=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;114;101;97;100;101;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;108;111;103;98;111;111;107;46;116;120;116;34;41;41; @@ -60058,7 +62015,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;70;111;120;58;32;34;32;43;32;99;111;117;110;116; -`,Vk=` +`,a7=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;114;101;97;100;101;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;108;111;103;98;111;111;107;46;116;120;116;34;41;41; @@ -60067,7 +62024,7 @@ lösung: vb-wald-loesung.visustruct 83;116;114;105;110;103;32;108;105;110;101;32;61;32;114;101;97;100;101;114;46;114;101;97;100;76;105;110;101;40;41; -`,qk=` +`,s7=` 83;116;114;105;110;103;32;116;101;120;116;32;61;32;70;105;108;101;115;46;114;101;97;100;83;116;114;105;110;103;40;80;97;116;104;46;111;102;40;34;108;111;103;98;111;111;107;46;116;120;116;34;41;41; @@ -60102,7 +62059,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;76;111;110;103;101;115;116;32;101;110;116;114;121;58;32;34;32;43;32;108;111;110;103;101;115;116; -`,Qk=` +`,r7=` 83;116;114;105;110;103;32;116;101;120;116;32;61;32;70;105;108;101;115;46;114;101;97;100;83;116;114;105;110;103;40;80;97;116;104;46;111;102;40;34;108;111;103;98;111;111;107;46;116;120;116;34;41;41; @@ -60111,7 +62068,7 @@ lösung: vb-wald-loesung.visustruct 83;116;114;105;110;103;91;93;32;108;105;110;101;115;32;61;32;116;101;120;116;46;115;112;108;105;116;40;34;92;110;34;41; -`,Uk=` +`,o7=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;114;101;97;100;101;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;99;108;97;115;115;46;99;115;118;34;41;41; @@ -60165,7 +62122,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;66;101;115;116;32;103;114;97;100;101;32;105;110;32;69;110;103;108;105;115;104;58;32;34;32;43;32;98;101;115;116;78;97;109;101;32;43;32;34;32;40;34;32;43;32;98;101;115;116;71;114;97;100;101;32;43;32;34;41;34; -`,Yk=` +`,l7=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;114;101;97;100;101;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;99;108;97;115;115;46;99;115;118;34;41;41; @@ -60174,7 +62131,7 @@ lösung: vb-wald-loesung.visustruct 83;116;114;105;110;103;32;108;105;110;101;32;61;32;114;101;97;100;101;114;46;114;101;97;100;76;105;110;101;40;41; -`,$k=` +`,u7=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;114;101;97;100;101;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;99;108;97;115;115;46;99;115;118;34;41;41; @@ -60215,7 +62172,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;77;97;116;104;115;32;97;118;101;114;97;103;101;58;32;34;32;43;32;115;117;109;32;47;32;99;111;117;110;116; -`,Kk=` +`,m7=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;114;101;97;100;101;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;99;108;97;115;115;46;99;115;118;34;41;41; @@ -60224,7 +62181,7 @@ lösung: vb-wald-loesung.visustruct 83;116;114;105;110;103;32;108;105;110;101;32;61;32;114;101;97;100;101;114;46;114;101;97;100;76;105;110;101;40;41; -`,Xk=` +`,c7=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;114;101;97;100;101;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;122;111;111;46;106;115;111;110;34;41;41; @@ -60263,7 +62220,7 @@ lösung: vb-wald-loesung.visustruct 114;101;97;100;101;114;46;99;108;111;115;101;40;41; -`,e7=` +`,d7=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;114;101;97;100;101;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;122;111;111;46;106;115;111;110;34;41;41; @@ -60272,7 +62229,7 @@ lösung: vb-wald-loesung.visustruct 83;116;114;105;110;103;32;108;105;110;101;32;61;32;114;101;97;100;101;114;46;114;101;97;100;76;105;110;101;40;41; -`,t7=` +`,h7=` 83;116;114;105;110;103;91;93;32;110;97;109;101;115;32;61;32;123;34;76;117;100;119;105;103;34;44;32;34;90;111;114;97;34;44;32;34;70;111;120;34;125; @@ -60322,7 +62279,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;110;97;109;101;115;46;108;101;110;103;116;104;32;43;32;34;32;101;110;116;114;105;101;115;32;115;97;118;101;100;34; -`,n7=` +`,g7=` 83;116;114;105;110;103;91;93;32;110;97;109;101;115;32;61;32;123;34;76;117;100;119;105;103;34;44;32;34;90;111;114;97;34;44;32;34;70;111;120;34;125; @@ -60340,7 +62297,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;46;99;108;111;115;101;40;41; -`,i7=` +`,p7=` 83;116;114;105;110;103;32;116;101;120;116;32;61;32;70;105;108;101;115;46;114;101;97;100;83;116;114;105;110;103;40;80;97;116;104;46;111;102;40;34;97;110;105;109;97;108;115;46;99;115;118;34;41;41; @@ -60393,7 +62350,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;40;108;105;110;101;115;46;108;101;110;103;116;104;32;45;32;49;41;32;43;32;34;32;97;110;105;109;97;108;115;32;115;97;118;101;100;34; -`,a7=` +`,f7=` 83;116;114;105;110;103;32;116;101;120;116;32;61;32;70;105;108;101;115;46;114;101;97;100;83;116;114;105;110;103;40;80;97;116;104;46;111;102;40;34;97;110;105;109;97;108;115;46;99;115;118;34;41;41; @@ -60414,7 +62371,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;46;99;108;111;115;101;40;41; -`,s7=` +`,b7=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;114;101;97;100;101;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;97;110;105;109;97;108;115;46;99;115;118;34;41;41; @@ -60458,7 +62415,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;99;111;117;110;116;32;43;32;34;32;115;101;110;116;101;110;99;101;115;32;115;97;118;101;100;34; -`,r7=` +`,x7=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;114;101;97;100;101;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;97;110;105;109;97;108;115;46;99;115;118;34;41;41; @@ -60479,7 +62436,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;46;99;108;111;115;101;40;41; -`,o7=` +`,v7=` 105;110;112;117;116;58;32;105;110;116;32;99;111;117;110;116;32;34;72;111;119;32;109;97;110;121;32;116;105;99;107;101;116;115;63;34; @@ -60491,7 +62448,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;84;111;116;97;108;58;32;34;32;43;32;116;111;116;97;108; -`,l7=` +`,y7=` 105;110;112;117;116;58;32;105;110;116;32;99;111;117;110;116;32;34;72;111;119;32;109;97;110;121;32;116;105;99;107;101;116;115;63;34; @@ -60503,7 +62460,7 @@ lösung: vb-wald-loesung.visustruct 100;111;117;98;108;101;32;116;111;116;97;108;32;61;32;99;111;117;110;116;32;42;32;56;46;53; -`,u7=` +`,w7=` 105;110;112;117;116;58;32;105;110;116;32;97;32;34;70;105;114;115;116;32;110;117;109;98;101;114;34; @@ -60527,7 +62484,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;98; -`,m7=` +`,z7=` 105;110;112;117;116;58;32;105;110;116;32;97;32;34;70;105;114;115;116;32;110;117;109;98;101;114;34; @@ -60548,7 +62505,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;98; -`,c7=` +`,I7=` 105;110;116;32;97;32;61;32;51; @@ -60572,7 +62529,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;98;32;61;32;34;32;43;32;98; -`,d7=` +`,k7=` 105;110;116;91;93;32;99;97;114;100;115;32;61;32;110;101;119;32;105;110;116;91;53;93; @@ -60631,7 +62588,7 @@ lösung: vb-wald-loesung.visustruct -`,h7=` +`,S7=` 105;110;116;91;93;32;99;97;114;100;115;32;61;32;110;101;119;32;105;110;116;91;53;93; @@ -60690,7 +62647,7 @@ lösung: vb-wald-loesung.visustruct -`,g7=` +`,T7=` 105;110;116;91;93;32;99;97;114;100;115;32;61;32;123;50;44;32;51;44;32;53;44;32;55;44;32;56;44;32;49;48;44;32;49;50;44;32;49;51;44;32;49;53;44;32;49;56;44;32;50;48;44;32;50;49;44;32;50;52;44;32;50;55;44;32;51;48;125; @@ -60764,7 +62721,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;67;111;109;112;97;114;105;115;111;110;115;58;32;34;32;43;32;99;111;109;112;97;114;105;115;111;110;115; -`,p7=` +`,_7=` 105;110;116;91;93;32;99;97;114;100;115;32;61;32;123;55;44;32;51;44;32;49;48;44;32;53;44;32;50;125; @@ -60813,7 +62770,7 @@ lösung: vb-wald-loesung.visustruct -`,f7=` +`,j7=` 105;110;116;91;93;32;99;97;114;100;115;32;61;32;123;56;44;32;52;44;32;49;49;44;32;52;44;32;54;125; @@ -60862,7 +62819,7 @@ lösung: vb-wald-loesung.visustruct -`,b7=` +`,A7=` 105;110;116;91;93;32;99;97;114;100;115;32;61;32;123;50;44;32;51;44;32;53;44;32;55;44;32;56;44;32;49;48;44;32;49;50;44;32;49;51;44;32;49;53;44;32;49;56;44;32;50;48;44;32;50;49;44;32;50;52;44;32;50;55;44;32;51;48;125; @@ -60920,7 +62877,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;67;111;109;112;97;114;105;115;111;110;115;58;32;34;32;43;32;99;111;109;112;97;114;105;115;111;110;115; -`,x7=` +`,C7=` 105;110;116;91;93;32;112;111;105;110;116;115;32;61;32;123;51;44;32;53;44;32;56;125; @@ -60939,7 +62896,7 @@ lösung: vb-wald-loesung.visustruct -`,v7=` +`,D7=` 105;110;116;91;93;32;112;111;105;110;116;115;32;61;32;123;51;44;32;53;44;32;56;125; @@ -60958,7 +62915,7 @@ lösung: vb-wald-loesung.visustruct -`,y7=` +`,P7=` 105;110;116;32;105;32;61;32;48; @@ -60971,7 +62928,7 @@ lösung: vb-wald-loesung.visustruct -`,w7=` +`,B7=` 105;110;116;32;110;117;109;98;101;114;32;61;32;53; @@ -60995,7 +62952,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;65;102;116;101;114;58;32;34;32;43;32;114;111;119;91;48;93;32;43;32;34;44;32;34;32;43;32;114;111;119;91;49;93; -`,z7=` +`,O7=` 105;110;116;32;105;32;61;32;48; @@ -61008,7 +62965,7 @@ lösung: vb-wald-loesung.visustruct -`,I7=` +`,M7=` 120;32;61;32;120;32;42;32;50; @@ -61017,7 +62974,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;73;110;32;116;104;101;32;115;117;98;112;114;111;103;114;97;109;58;32;120;32;61;32;34;32;43;32;120; -`,k7=` +`,Z7=` 105;110;116;32;100;105;115;116;97;110;99;101;32;61;32;109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41; @@ -61026,7 +62983,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;68;105;115;116;97;110;99;101;58;32;34;32;43;32;100;105;115;116;97;110;99;101;32;43;32;34;32;99;109;34;41; -`,S7=` +`,L7=` 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;60;32;49;48; @@ -61052,7 +63009,7 @@ lösung: vb-wald-loesung.visustruct -`,T7=` +`,W7=` 33;109;98;111;116;46;105;115;66;117;116;116;111;110;66;40;41; @@ -61079,7 +63036,7 @@ lösung: vb-wald-loesung.visustruct -`,_7=` +`,E7=` 109;98;111;116;46;115;101;116;76;101;100;40;50;53;53;44;32;48;44;32;48;41; @@ -61097,7 +63054,50 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;101;116;76;101;100;40;48;44;32;50;53;53;44;32;48;41; -`,j7=` +`,N7=` + + + 105;110;116;32;115;116;97;116;101;32;61;32;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;54; + 105;43;43; + + + 115;116;97;116;101; + + + 109;98;111;116;46;115;101;116;76;101;100;40;50;53;53;44;32;48;44;32;48;41; + + + 115;116;97;116;101;32;61;32;49; + + + + + 109;98;111;116;46;115;101;116;76;101;100;40;48;44;32;50;53;53;44;32;48;41; + + + 115;116;97;116;101;32;61;32;50; + + + + + 109;98;111;116;46;115;101;116;76;101;100;40;50;53;53;44;32;50;48;48;44;32;48;41; + + + 115;116;97;116;101;32;61;32;48; + + + + + 109;98;111;116;46;112;97;117;115;101;40;49;48;48;48;41; + + + + +`,F7=` 109;98;111;116;46;103;101;116;76;105;110;101;40;41;32;61;61;32;48; @@ -61127,7 +63127,7 @@ lösung: vb-wald-loesung.visustruct -`,C7=` +`,R7=` 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;72;101;108;108;111;33;34;41; @@ -61139,7 +63139,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;73;32;97;109;32;86;105;115;117;66;111;116;34;41; -`,A7=` +`,J7=` 105;110;116;32;110;117;109;98;101;114;32;61;32;48; @@ -61191,7 +63191,7 @@ lösung: vb-wald-loesung.visustruct -`,P7=` +`,G7=` 33;109;98;111;116;46;103;101;116;67;111;108;111;114;40;41;46;101;113;117;97;108;115;40;34;114;101;100;34;41; @@ -61202,7 +63202,7 @@ lösung: vb-wald-loesung.visustruct -`,D7=` +`,H7=` 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;49;53; @@ -61213,7 +63213,7 @@ lösung: vb-wald-loesung.visustruct -`,B7=` +`,V7=` 109;98;111;116;46;103;101;116;76;105;110;101;40;41;32;61;61;32;48; @@ -61224,7 +63224,7 @@ lösung: vb-wald-loesung.visustruct -`,O7=` +`,q7=` 83;116;114;105;110;103;32;119;111;114;100;32;61;32;34;86;105;115;117;66;111;116;34; @@ -61243,7 +63243,7 @@ lösung: vb-wald-loesung.visustruct -`,M7=` +`,Q7=` 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;49;53; @@ -61257,7 +63257,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;112;108;97;121;84;111;110;101;40;52;52;48;44;32;51;48;48;41; -`,Z7=` +`,U7=` 109;98;111;116;46;108;101;100;40;48;41;46;115;101;116;67;111;108;111;114;40;34;114;101;100;34;41; @@ -61269,7 +63269,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;108;101;100;40;52;41;46;115;101;116;67;111;108;111;114;40;34;103;114;101;101;110;34;41; -`,L7=` +`,Y7=` 105;110;116;32;105;32;61;32;48; @@ -61285,7 +63285,7 @@ lösung: vb-wald-loesung.visustruct -`,W7=` +`,$7=` 33;109;98;111;116;46;103;101;116;67;111;108;111;114;40;41;46;101;113;117;97;108;115;40;34;98;108;117;101;34;41; @@ -61313,7 +63313,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;80;97;114;107;101;100;33;34;41; -`,E7=` +`,K7=` 109;98;111;116;46;102;111;114;119;97;114;100;40;41; @@ -61331,7 +63331,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;102;111;114;119;97;114;100;40;41; -`,N7=` +`,X7=` 83;116;114;105;110;103;91;93;32;99;111;108;111;117;114;115;32;61;32;123;34;114;101;100;34;44;32;34;121;101;108;108;111;119;34;44;32;34;103;114;101;101;110;34;44;32;34;98;108;117;101;34;44;32;34;112;117;114;112;108;101;34;125; @@ -61347,7 +63347,7 @@ lösung: vb-wald-loesung.visustruct -`,F7=` +`,e8=` 109;98;111;116;46;103;101;116;67;111;108;111;114;40;41; @@ -61373,7 +63373,7 @@ lösung: vb-wald-loesung.visustruct -`,R7=` +`,t8=` 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;60;32;50;48; @@ -61389,7 +63389,7 @@ lösung: vb-wald-loesung.visustruct -`,J7=` +`,n8=` 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;49;53; @@ -61400,7 +63400,7 @@ lösung: vb-wald-loesung.visustruct -`,G7=` +`,i8=` 105;110;116;32;115;116;101;112;115;32;61;32;48; @@ -61420,7 +63420,38 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;83;116;101;112;115;58;32;34;32;43;32;83;116;101;112;115;41; -`,H7=` +`,a8=` + + + 105;110;116;32;115;105;100;101;32;61;32;49;48; + + + 105;110;116;32;116;111;116;97;108;32;61;32;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;52; + 105;43;43; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;115;105;100;101;41; + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + 116;111;116;97;108;32;61;32;84;111;116;97;108;32;43;32;115;105;100;101; + + + 115;105;100;101;32;61;32;115;105;100;101;32;43;32;49;48; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;68;105;115;116;97;110;99;101;58;32;34;32;43;32;116;111;116;97;108;32;43;32;34;32;99;109;34;41; + + +`,s8=` 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;49;53; @@ -61434,7 +63465,52 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;112;108;97;121;84;111;110;101;40;52;52;48;41; -`,V7=` +`,r8=` + + + 99;111;110;115;116;32;105;110;116;32;83;73;68;69;32;61;32;51;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;52; + 105;43;43; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;115;105;100;101;41; + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + + +`,o8=` + + + 109;98;111;116;46;103;101;116;66;114;105;103;104;116;110;101;115;115;40;41;32;60;32;50;48; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;78;105;103;104;116;41; + + + + + 109;98;111;116;46;103;101;116;66;114;105;103;104;116;110;101;115;115;40;41;32;60;32;54;48; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;68;117;115;107;34;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;68;97;121;34;41; + + + + + + +`,l8=` 105;110;116;32;115;116;101;112;115;32;61;32;48; @@ -61464,7 +63540,7 @@ lösung: vb-wald-loesung.visustruct -`,q7=` +`,u8=` 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;49;53;32;38;38;32;109;98;111;116;46;103;101;116;76;105;110;101;40;41;32;61;61;32;48; @@ -61478,7 +63554,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;112;108;97;121;116;111;110;101;40;52;52;48;44;32;51;48;48;41; -`,Q7=` +`,m8=` 33;109;98;111;116;46;103;101;116;67;111;108;111;114;40;41;46;101;113;117;97;108;115;40;34;98;108;117;101;34;41; @@ -61502,7 +63578,48 @@ lösung: vb-wald-loesung.visustruct -`,U7=` +`,c8=` + + + 105;110;116;32;109;97;120;32;61;32;48; + + + 105;110;116;32;100;105;114;101;99;116;105;111;110;32;61;32;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;52; + 105;43;43; + + + 105;110;116;32;100;105;115;116;97;110;99;101;32;61;32;109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41; + + + 100;105;115;116;97;110;99;101;32;62;32;109;97;120; + + + 109;97;120;32;61;32;100;105;115;116;97;110;99;101; + + + 100;105;114;101;99;116;105;111;110;32;61;32;73; + + + + + 248; + + + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;68;105;114;101;99;116;105;111;110;58;32;34;32;43;32;100;105;114;101;99;116;105;111;110;41; + + +`,d8=` 109;98;111;116;46;103;101;116;76;105;110;101;40;41; @@ -61528,7 +63645,7 @@ lösung: vb-wald-loesung.visustruct -`,Y7=` +`,h8=` 105;110;116;32;105;32;61;32;48; @@ -61561,7 +63678,7 @@ lösung: vb-wald-loesung.visustruct -`,$7=` +`,g8=` @@ -61588,7 +63705,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;83;116;111;112;112;101;100;41; -`,K7=` +`,p8=` 109;98;111;116;46;103;101;116;66;114;105;103;104;116;110;101;115;115;40;41;32;60;32;51;48; @@ -61607,7 +63724,49 @@ lösung: vb-wald-loesung.visustruct -`,X7=` +`,f8=` + + + 98;111;111;108;101;97;110;32;108;111;117;100;32;61;32;102;97;108;115;101; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;51;48; + 105;43;43; + + + 109;98;111;116;46;103;101;116;76;111;117;100;110;101;115;115;40;41;32;62;32;54;48; + + + 108;111;117;100;32;61;32;84;114;117;101; + + + + + 248; + + + + + 109;98;111;116;46;112;97;117;115;101;40;49;48;48;41; + + + + + 108;111;117;100; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;67;108;97;112;33;34;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;65;108;108;32;113;117;105;101;116;34;41; + + + + +`,b8=` 109;98;111;116;46;103;101;116;76;111;117;100;110;101;115;115;40;41;32;62;32;54;48; @@ -61623,7 +63782,7 @@ lösung: vb-wald-loesung.visustruct -`,e8=` +`,x8=` 109;98;111;116;46;103;101;116;80;105;116;99;104;40;41;32;62;32;45;53;32;38;38;32;109;98;111;116;46;103;101;116;80;105;116;99;104;40;41;32;60;32;53;32;38;38;32;109;98;111;116;46;103;101;116;82;111;108;108;40;41;32;62;32;45;53;32;38;38;32;109;98;111;116;46;103;101;116;82;111;108;108;40;41;32;60;32;53; @@ -61639,7 +63798,7 @@ lösung: vb-wald-loesung.visustruct -`,t8=` +`,v8=` 105;110;116;32;105;32;61;32;48; @@ -61661,7 +63820,7 @@ lösung: vb-wald-loesung.visustruct -`,n8=` +`,y8=` 105;110;116;32;105;32;61;32;48; @@ -61680,7 +63839,7 @@ lösung: vb-wald-loesung.visustruct -`,i8=` +`,w8=` 105;110;116;32;105;32;61;32;49; @@ -61693,7 +63852,7 @@ lösung: vb-wald-loesung.visustruct -`,a8=` +`,z8=` 105;110;116;91;93;32;118;97;108;117;101;115;32;61;32;110;101;119;32;105;110;116;91;53;93; @@ -61731,7 +63890,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;65;118;101;114;97;103;101;58;32;34;32;43;32;97;118;101;114;97;103;101;41; -`,s8=` +`,I8=` 105;110;116;32;105;32;61;32;51; @@ -61750,7 +63909,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;71;111;33;34;41; -`,r8=` +`,k8=` 83;116;114;105;110;103;32;116;101;120;116;32;61;32;34;72;101;108;108;111;32;99;108;97;115;115;34; @@ -61759,7 +63918,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;84;101;120;116;32;43;32;34;32;40;34;32;43;32;116;101;120;116;46;108;101;110;103;116;104;40;41;32;43;32;34;41;34;41; -`,o8=` +`,S8=` 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;49;53; @@ -61803,7 +63962,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;83;116;111;112;40;41; -`,l8=` +`,T8=` 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;66;97;116;116;101;114;121;58;32;34;32;43;32;109;98;111;116;46;103;101;116;66;97;116;116;101;114;121;40;41;32;43;32;34;32;37;34;41; @@ -61822,7 +63981,55 @@ lösung: vb-wald-loesung.visustruct -`,u8=` +`,_8=` + + + 83;116;114;105;110;103;32;115;116;97;116;101;32;61;32;34;114;101;100;34; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;54; + 105;43;43; + + + 115;116;97;116;101;46;101;113;117;97;108;115;40;34;114;101;100;34;41; + + + 109;98;111;116;46;115;101;116;76;101;100;40;50;53;53;44;32;48;44;32;48;41; + + + 115;116;97;116;101;32;61;32;103;114;101;101;110; + + + + + 115;116;97;116;101;46;101;113;117;97;108;115;40;34;103;114;101;101;110;34;41; + + + 109;98;111;116;46;115;101;116;76;101;100;40;48;44;32;50;53;53;44;32;48;41; + + + 115;116;97;116;101;32;61;32;34;121;101;108;108;111;119;34; + + + + + 109;98;111;116;46;115;101;116;76;101;100;40;50;53;53;44;32;50;48;48;44;32;48;41; + + + 115;116;97;116;101;32;61;32;34;114;101;100;34; + + + + + + + 109;98;111;116;46;112;97;117;115;101;40;49;48;48;48;41; + + + + +`,j8=` 105;110;116;32;105;32;61;32;48; @@ -61844,7 +64051,7 @@ lösung: vb-wald-loesung.visustruct -`,m8=` +`,A8=` 109;98;111;116;46;100;114;105;118;101;40;53;48;44;32;53;48;41; @@ -61861,7 +64068,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;116;111;112;40;41; -`,c8=` +`,C8=` 109;98;111;116;46;102;111;114;119;97;114;100;40;41; @@ -61879,7 +64086,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;102;111;114;119;97;114;100;40;41; -`,d8=` +`,D8=` 33;109;98;111;116;46;103;101;116;67;111;108;111;114;40;41;46;101;113;117;97;108;115;40;34;114;101;100;34;41; @@ -61915,7 +64122,7 @@ lösung: vb-wald-loesung.visustruct -`,h8=` +`,P8=` 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;66;97;116;116;101;114;121;58;32;34;32;43;32;109;98;111;116;46;103;101;116;66;97;116;116;101;114;121;40;41;32;43;32;34;32;37;34;41; @@ -61934,7 +64141,55 @@ lösung: vb-wald-loesung.visustruct -`,g8=` +`,B8=` + + + 83;116;114;105;110;103;32;115;116;97;116;101;32;61;32;34;114;101;100;34; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;54; + 105;43;43; + + + 115;116;97;116;101;46;101;113;117;97;108;115;40;34;114;101;100;34;41; + + + 109;98;111;116;46;115;101;116;76;101;100;40;50;53;53;44;32;48;44;32;48;41; + + + 115;116;97;116;101;32;61;32;34;103;114;101;101;110;34; + + + + + 115;116;97;116;101;46;101;113;117;97;108;115;40;34;103;114;101;101;110;34;41; + + + 109;98;111;116;46;115;101;116;76;101;100;40;48;44;32;50;53;53;44;32;48;41; + + + 115;116;97;116;101;32;61;32;34;121;101;108;108;111;119;34; + + + + + 109;98;111;116;46;115;101;116;76;101;100;40;50;53;53;44;32;50;48;48;44;32;48;41; + + + 115;116;97;116;101;32;61;32;34;114;101;100;34; + + + + + + + 109;98;111;116;46;112;97;117;115;101;40;49;48;48;48;41; + + + + +`,O8=` 33;109;98;111;116;46;103;101;116;67;111;108;111;114;40;41;46;101;113;117;97;108;115;40;34;98;108;117;101;34;41; @@ -61958,7 +64213,7 @@ lösung: vb-wald-loesung.visustruct -`,p8=` +`,M8=` 105;110;116;32;105;32;61;32;48; @@ -61980,7 +64235,7 @@ lösung: vb-wald-loesung.visustruct -`,f8=` +`,Z8=` 105;110;116;32;105;32;61;32;51; @@ -61999,7 +64254,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;71;111;33;34;41; -`,b8=` +`,L8=` 105;110;116;32;105;32;61;32;49; @@ -62012,7 +64267,7 @@ lösung: vb-wald-loesung.visustruct -`,x8=` +`,W8=` 105;110;116;32;105;32;61;32;48; @@ -62045,7 +64300,68 @@ lösung: vb-wald-loesung.visustruct -`,v8=` +`,E8=` + + + 98;111;111;108;101;97;110;32;108;111;117;100;32;61;32;102;97;108;115;101; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;51;48; + 105;43;43; + + + 109;98;111;116;46;103;101;116;76;111;117;100;110;101;115;115;40;41;32;62;32;54;48; + + + 108;111;117;100;32;61;32;116;114;117;101; + + + + + 248; + + + + + 109;98;111;116;46;112;97;117;115;101;40;49;48;48;41; + + + + + 108;111;117;100; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;67;108;97;112;33;34;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;65;108;108;32;113;117;105;101;116;34;41; + + + + +`,N8=` + + + 99;111;110;115;116;32;105;110;116;32;83;73;68;69;32;61;32;51;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;52; + 105;43;43; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;83;73;68;69;41; + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + + +`,F8=` 109;98;111;116;46;103;101;116;76;111;117;100;110;101;115;115;40;41;32;62;32;54;48; @@ -62061,7 +64377,7 @@ lösung: vb-wald-loesung.visustruct -`,y8=` +`,R8=` 105;110;116;32;105;32;61;32;48; @@ -62080,7 +64396,7 @@ lösung: vb-wald-loesung.visustruct -`,w8=` +`,J8=` 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;49;53; @@ -62124,7 +64440,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;116;111;112;40;41; -`,z8=` +`,G8=` 109;98;111;116;46;103;101;116;66;114;105;103;104;116;110;101;115;115;40;41;32;60;32;51;48; @@ -62143,7 +64459,7 @@ lösung: vb-wald-loesung.visustruct -`,I8=` +`,H8=` 105;110;116;32;115;116;101;112;115;32;61;32;48; @@ -62173,7 +64489,7 @@ lösung: vb-wald-loesung.visustruct -`,k8=` +`,V8=` 105;110;116;32;108;101;110;103;116;104;32;61;32;54;48; @@ -62201,7 +64517,7 @@ lösung: vb-wald-loesung.visustruct -`,S8=` +`,q8=` 105;110;116;32;105;32;61;32;48; @@ -62223,7 +64539,48 @@ lösung: vb-wald-loesung.visustruct -`,T8=` +`,Q8=` + + + 105;110;116;32;109;97;120;32;61;32;48; + + + 105;110;116;32;100;105;114;101;99;116;105;111;110;32;61;32;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;52; + 105;43;43; + + + 105;110;116;32;100;105;115;116;97;110;99;101;32;61;32;109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41; + + + 100;105;115;116;97;110;99;101;32;62;32;109;97;120; + + + 109;97;120;32;61;32;100;105;115;116;97;110;99;101; + + + 100;105;114;101;99;116;105;111;110;32;61;32;105; + + + + + 248; + + + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;68;105;114;101;99;116;105;111;110;58;32;34;32;43;32;100;105;114;101;99;116;105;111;110;41; + + +`,U8=` 105;110;116;32;115;116;101;112;115;32;61;32;48; @@ -62243,7 +64600,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;83;116;101;112;115;58;32;34;32;43;32;115;116;101;112;115;41; -`,_8=` +`,Y8=` 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;49;53;32;38;38;32;109;98;111;116;46;103;101;116;76;105;110;101;40;41;32;61;61;32;48; @@ -62257,7 +64614,64 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;112;108;97;121;84;111;110;101;40;52;52;48;44;32;51;48;48;41; -`,j8=` +`,$8=` + + + 105;110;116;32;115;105;100;101;32;61;32;49;48; + + + 105;110;116;32;116;111;116;97;108;32;61;32;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;52; + 105;43;43; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;115;105;100;101;41; + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + 116;111;116;97;108;32;61;32;116;111;116;97;108;32;43;32;115;105;100;101; + + + 115;105;100;101;32;61;32;115;105;100;101;32;43;32;49;48; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;68;105;115;116;97;110;99;101;58;32;34;32;43;32;116;111;116;97;108;32;43;32;34;32;99;109;34;41; + + +`,K8=` + + + 109;98;111;116;46;103;101;116;66;114;105;103;104;116;110;101;115;115;40;41;32;60;32;50;48; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;78;105;103;104;116;34;41; + + + + + 109;98;111;116;46;103;101;116;66;114;105;103;104;116;110;101;115;115;40;41;32;60;32;54;48; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;68;117;115;107;34;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;68;97;121;34;41; + + + + + + +`,X8=` @@ -62284,7 +64698,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;83;116;111;112;112;101;100;34;41; -`,C8=` +`,eS=` 83;116;114;105;110;103;32;116;101;120;116;32;61;32;34;72;101;108;108;111;32;99;108;97;115;115;34; @@ -62293,7 +64707,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;116;101;120;116;32;43;32;34;32;40;34;32;43;32;116;101;120;116;46;108;101;110;103;116;104;40;41;32;43;32;34;41;34;41; -`,A8=` +`,tS=` 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;49;53; @@ -62307,7 +64721,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;112;108;97;121;84;111;110;101;40;52;52;48;44;32;51;48;48;41; -`,P8=` +`,nS=` 109;98;111;116;46;103;101;116;80;105;116;99;104;40;41;32;62;32;45;53;32;38;38;32;109;98;111;116;46;103;101;116;80;105;116;99;104;40;41;32;60;32;53;32;38;38;32;109;98;111;116;46;103;101;116;82;111;108;108;40;41;32;62;32;45;53;32;38;38;32;109;98;111;116;46;103;101;116;82;111;108;108;40;41;32;60;32;53; @@ -62323,7 +64737,7 @@ lösung: vb-wald-loesung.visustruct -`,D8=` +`,iS=` 109;98;111;116;46;103;101;116;76;111;117;100;110;101;115;115;40;41;32;60;32;53;48; @@ -62337,7 +64751,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;102;111;114;119;97;114;100;40;51;48;41; -`,B8=` +`,aS=` 105;110;116;32;105;32;61;32;48; @@ -62372,7 +64786,24 @@ lösung: vb-wald-loesung.visustruct -`,O8=` +`,sS=` + + + 99;111;110;115;116;32;105;110;116;32;68;73;83;84;65;78;67;69;32;61;32;50;48; + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;68;73;83;84;65;78;67;69; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;41; + + + + + 109;98;111;116;46;112;108;97;121;84;111;110;101;40;52;52;48;44;32;51;48;48;41; + + +`,rS=` 109;98;111;116;46;102;111;114;119;97;114;100;40;41; @@ -62398,7 +64829,7 @@ lösung: vb-wald-loesung.visustruct -`,M8=` +`,oS=` 109;98;111;116;46;102;111;114;119;97;114;100;40;41; @@ -62410,7 +64841,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;102;111;114;119;97;114;100;40;41; -`,Z8=` +`,lS=` 105;110;116;32;115;105;100;101;32;61;32;50;48; @@ -62432,7 +64863,119 @@ lösung: vb-wald-loesung.visustruct -`,L8=` +`,uS=` + + + 99;111;110;115;116;32;105;110;116;32;68;73;83;84;65;78;67;69;32;61;32;50;48; + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;68;73;83;84;65;78;67;69; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;41; + + + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;49;56;48;41; + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;68;73;83;84;65;78;67;69; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;41; + + + + +`,mS=` + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;50;48; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;41; + + + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;49;56;48;41; + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;50;48; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;41; + + + + +`,cS=` + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;60;32;49;48; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;83;116;111;112;34;41; + + + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;60;32;51;48; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;83;108;111;119;34;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;70;114;101;101;34;41; + + + + + + +`,dS=` + + + 83;116;114;105;110;103;32;115;116;97;116;101;32;61;32;34;100;114;105;118;101;34; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;50;48; + 105;43;43; + + + 115;116;97;116;101;46;101;113;117;97;108;115;40;34;100;114;105;118;101;34;41; + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;60;32;50;48; + + + 115;116;97;116;101;32;61;32;34;116;117;114;110;34; + + + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;41; + + + + + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + 115;116;97;116;101;32;61;32;34;100;114;105;118;101;34; + + + + + + +`,hS=` 109;98;111;116;46;103;101;116;76;105;110;101;40;41;32;61;61;32;48; @@ -62466,7 +65009,7 @@ lösung: vb-wald-loesung.visustruct -`,W8=` +`,gS=` 83;116;114;105;110;103;32;119;111;114;100;32;61;32;34;76;117;100;119;105;103;34; @@ -62485,7 +65028,7 @@ lösung: vb-wald-loesung.visustruct -`,E8=` +`,pS=` 33;109;98;111;116;46;103;101;116;67;111;108;111;114;40;41;46;101;113;117;97;108;115;40;34;114;101;100;34;41; @@ -62529,7 +65072,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;116;111;112;40;41; -`,N8=` +`,fS=` 109;98;111;116;46;103;101;116;76;105;110;101;40;41; @@ -62555,7 +65098,42 @@ lösung: vb-wald-loesung.visustruct -`,F8=` +`,bS=` + + + 105;110;116;32;109;97;120;32;61;32;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;52; + 105;43;43; + + + 105;110;116;32;100;105;115;116;97;110;99;101;32;61;32;109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41; + + + 100;105;115;116;97;110;99;101;32;62;32;109;97;120; + + + 109;97;120;32;61;32;100;105;115;116;97;110;99;101; + + + + + 248; + + + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;70;97;114;116;104;101;115;116;58;32;34;32;43;32;109;97;120;32;43;32;34;32;99;109;34;41; + + +`,xS=` 105;110;116;91;93;32;116;111;110;101;115;32;61;32;123;50;54;50;44;32;50;57;52;44;32;51;51;48;44;32;51;52;57;44;32;51;57;50;125; @@ -62571,7 +65149,7 @@ lösung: vb-wald-loesung.visustruct -`,R8=` +`,vS=` 105;110;116;91;93;32;118;97;108;117;101;115;32;61;32;110;101;119;32;105;110;116;91;53;93; @@ -62609,7 +65187,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;65;118;101;114;97;103;101;58;32;34;32;43;32;97;118;101;114;97;103;101;41; -`,J8=` +`,yS=` 105;110;116;32;105;32;61;32;48; @@ -62675,7 +65253,7 @@ lösung: vb-wald-loesung.visustruct -`,G8=` +`,wS=` 109;98;111;116;46;103;101;116;66;114;105;103;104;116;110;101;115;115;40;41;32;60;32;51;48; @@ -62691,7 +65269,7 @@ lösung: vb-wald-loesung.visustruct -`,H8=` +`,zS=` 109;98;111;116;46;103;101;116;66;114;105;103;104;116;110;101;115;115;40;41;32;60;32;50;48; @@ -62708,7 +65286,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;90;122;122;34;41; -`,V8=` +`,IS=` @@ -62735,7 +65313,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;112;108;97;121;84;111;110;101;40;52;52;48;44;32;51;48;48;41; -`,q8=` +`,kS=` 109;98;111;116;46;105;115;66;117;116;116;111;110;65;40;41;32;124;124;32;109;98;111;116;46;105;115;66;117;116;116;111;110;66;40;41; @@ -62751,7 +65329,7 @@ lösung: vb-wald-loesung.visustruct -`,Q8=` +`,SS=` 109;98;111;116;46;102;111;114;119;97;114;100;40;41; @@ -62826,7 +65404,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; -`,U8=` +`,TS=` 115;113;117;97;114;101;40;51;48;41; @@ -62835,7 +65413,7 @@ lösung: vb-wald-loesung.visustruct 115;113;117;97;114;101;40;53;48;41; -`,Y8=` +`,_S=` 105;110;116;32;105;32;61;32;48; @@ -62890,7 +65468,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; -`,$8=` +`,jS=` 105;110;116;32;105;32;61;32;48; @@ -62906,7 +65484,7 @@ lösung: vb-wald-loesung.visustruct -`,K8=` +`,AS=` 105;110;116;32;105;32;61;32;48; @@ -62929,7 +65507,7 @@ lösung: vb-wald-loesung.visustruct -`,X8=` +`,CS=` 109;98;111;116;46;103;101;116;76;105;110;101;40;41;32;61;61;32;48; @@ -62943,7 +65521,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;49;56;48;41; -`,eS=` +`,DS=` 109;98;111;116;46;103;101;116;80;105;116;99;104;40;41;32;62;32;50;48;32;124;124;32;109;98;111;116;46;103;101;116;80;105;116;99;104;40;41;32;60;32;45;50;48; @@ -62959,7 +65537,27 @@ lösung: vb-wald-loesung.visustruct -`,tS=` +`,PS=` + + + 105;110;116;32;115;116;101;112;115;32;61;32;48; + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;49;53; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;41; + + + 115;116;101;112;115;32;61;32;115;116;101;112;115;32;43;32;49; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;83;116;101;112;115;58;32;34;32;43;32;115;116;101;112;115;41; + + +`,BS=` 105;110;116;32;105;32;61;32;48; @@ -63011,7 +65609,7 @@ lösung: vb-wald-loesung.visustruct -`,nS=` +`,OS=` 105;110;116;32;115;105;100;101;32;61;32;50;48; @@ -63033,7 +65631,7 @@ lösung: vb-wald-loesung.visustruct -`,iS=` +`,MS=` 105;110;116;32;115;105;100;101;32;61;32;50;48; @@ -63055,7 +65653,7 @@ lösung: vb-wald-loesung.visustruct -`,aS=` +`,ZS=` 105;110;116;32;105;32;61;32;49; @@ -63071,7 +65669,7 @@ lösung: vb-wald-loesung.visustruct -`,sS=` +`,LS=` 33;109;98;111;116;46;105;115;66;117;116;116;111;110;65;40;41; @@ -63085,7 +65683,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;102;111;114;119;97;114;100;40;51;48;41; -`,rS=` +`,WS=` 105;110;116;32;114;117;110;100;101;32;61;32;49; @@ -63119,7 +65717,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;102;111;114;119;97;114;100;40;53;48;41; -`,oS=` +`,ES=` 105;110;116;32;108;101;110;103;116;104;32;61;32;54;48; @@ -63153,7 +65751,33 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;68;105;115;116;97;110;99;101;58;32;34;32;43;32;100;105;115;116;97;110;99;101;32;43;32;34;32;99;109;34;41; -`,lS=` +`,NS=` + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;60;32;49;48; + + + 109;98;111;116;46;98;97;99;107;119;97;114;100;40;53;41; + + + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;60;32;51;48; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;53;41; + + + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;50;48;41; + + + + + + +`,FS=` 109;98;111;116;46;112;108;97;121;84;111;110;101;40;50;54;50;44;32;51;48;48;41; @@ -63171,7 +65795,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;112;108;97;121;84;111;110;101;40;51;57;50;44;32;51;48;48;41; -`,uS=` +`,RS=` 105;110;116;32;105;32;61;32;48; @@ -63193,7 +65817,7 @@ lösung: vb-wald-loesung.visustruct -`,mS=` +`,JS=` 105;110;116;32;108;101;102;116;32;61;32;57;57; @@ -63225,7 +65849,7 @@ lösung: vb-wald-loesung.visustruct -`,cS=` +`,GS=` 105;110;116;32;105;32;61;32;48; @@ -63241,7 +65865,7 @@ lösung: vb-wald-loesung.visustruct -`,dS=` +`,HS=` 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;49;53;32;38;38;32;109;98;111;116;46;103;101;116;76;105;110;101;40;41;32;61;61;32;48; @@ -63257,7 +65881,7 @@ lösung: vb-wald-loesung.visustruct -`,hS=` +`,VS=` 105;110;116;32;115;105;100;101;32;61;32;51;48; @@ -63276,7 +65900,7 @@ lösung: vb-wald-loesung.visustruct -`,gS=` +`,qS=` 105;110;116;32;105;32;61;32;48; @@ -63309,7 +65933,7 @@ lösung: vb-wald-loesung.visustruct -`,pS=` +`,QS=` 109;98;111;116;46;103;101;116;76;105;110;101;40;41;32;61;61;32;48; @@ -63348,7 +65972,7 @@ lösung: vb-wald-loesung.visustruct -`,fS=` +`,US=` 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;60;32;50;48; @@ -63364,7 +65988,49 @@ lösung: vb-wald-loesung.visustruct -`,bS=` +`,YS=` + + + 98;111;111;108;101;97;110;32;100;97;114;107;32;61;32;102;97;108;115;101; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;51;48; + 105;43;43; + + + 109;98;111;116;46;103;101;116;66;114;105;103;104;116;110;101;115;115;40;41;32;60;32;50;48; + + + 100;97;114;107;32;61;32;116;114;117;101; + + + + + 248; + + + + + 109;98;111;116;46;112;97;117;115;101;40;49;48;48;41; + + + + + 100;97;114;107; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;73;116;32;119;97;115;32;100;97;114;107;34;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;65;108;119;97;121;115;32;98;114;105;103;104;116;34;41; + + + + +`,$S=` 105;110;116;32;100;105;115;116;97;110;99;101;32;61;32;99;101;110;116;105;109;101;116;114;101;115;40;51;41; @@ -63376,13 +66042,13 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;68;105;115;116;97;110;99;101;58;32;34;32;43;32;100;105;115;116;97;110;99;101;32;43;32;34;32;99;109;34;41; -`,xS=` +`,KS=` 114;101;116;117;114;110;32;114;111;116;97;116;105;111;110;115;32;42;32;50;48; -`,vS=` +`,XS=` 109;98;111;116;46;114;101;115;101;116;84;105;109;101;114;40;41; @@ -63402,7 +66068,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;116;111;112;40;41; -`,yS=` +`,eT=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;102;105;114;115;116;78;97;109;101;32;34;70;105;114;115;116;32;110;97;109;101;34; @@ -63414,7 +66080,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;102;105;114;115;116;78;97;109;101;46;99;104;97;114;65;116;40;48;41;32;43;32;34;46;32;34;32;43;32;108;97;115;116;78;97;109;101;46;99;104;97;114;65;116;40;48;41;32;43;32;34;46;34; -`,wS=` +`,tT=` 83;116;114;105;110;103;32;119;111;114;100;32;61;32;34;66;105;108;108;121;103;111;97;116;34; @@ -63453,7 +66119,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;116;101;120;116; -`,zS=` +`,nT=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;119;111;114;100;32;34;69;110;116;101;114;32;97;32;119;111;114;100;34; @@ -63475,7 +66141,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;98;97;99;107;119;97;114;100;115; -`,IS=` +`,iT=` 83;116;114;105;110;103;32;108;105;110;101;32;61;32;34;76;117;100;119;105;103;59;98;105;108;108;121;32;103;111;97;116;59;55;34; @@ -63494,7 +66160,7 @@ lösung: vb-wald-loesung.visustruct -`,kS=` +`,aT=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;115;101;110;116;101;110;99;101;32;34;69;110;116;101;114;32;97;32;115;101;110;116;101;110;99;101;34; @@ -63506,7 +66172,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;87;111;114;100;115;58;32;34;32;43;32;119;111;114;100;115;46;108;101;110;103;116;104; -`,SS=` +`,sT=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;119;111;114;100;32;34;69;110;116;101;114;32;97;32;119;111;114;100;34; @@ -63538,7 +66204,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;78;117;109;98;101;114;32;111;102;32;101;58;32;34;32;43;32;99;111;117;110;116; -`,TS=` +`,rT=` 83;116;114;105;110;103;32;119;111;114;100;32;61;32;34;66;105;108;108;121;103;111;97;116;34; @@ -63562,7 +66228,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;119;111;114;100;46;116;111;85;112;112;101;114;67;97;115;101;40;41; -`,_S=` +`,oT=` 105;110;116;91;93;91;93;32;116;97;98;101;108;108;101;32;61;32;110;101;119;32;105;110;116;91;49;48;93;91;49;48;93; @@ -63594,7 +66260,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;97;32;43;32;34;32;183;32;34;32;43;32;98;32;43;32;34;32;61;32;34;32;43;32;116;97;98;101;108;108;101;91;97;32;45;32;49;93;91;98;32;45;32;49;93; -`,jS=` +`,lT=` 98;111;111;108;101;97;110;91;93;91;93;32;115;105;116;122;101;32;61;32;110;101;119;32;98;111;111;108;101;97;110;91;51;93;91;53;93; @@ -63642,7 +66308,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;70;114;101;105;58;32;34;32;43;32;102;114;101;105; -`,CS=` +`,uT=` 98;111;111;108;101;97;110;91;93;91;93;32;115;105;116;122;101;32;61;32;110;101;119;32;98;111;111;108;101;97;110;91;51;93;91;53;93; @@ -63657,7 +66323,7 @@ lösung: vb-wald-loesung.visustruct 115;105;116;122;101;91;50;93;91;51;93;32;61;32;116;114;117;101; -`,AS=` +`,mT=` 98;111;111;108;101;97;110;91;93;91;93;32;115;105;116;122;101;32;61;32;110;101;119;32;98;111;111;108;101;97;110;91;51;93;91;53;93; @@ -63691,7 +66357,7 @@ lösung: vb-wald-loesung.visustruct -`,PS=` +`,cT=` 98;111;111;108;101;97;110;91;93;91;93;32;115;105;116;122;101;32;61;32;110;101;119;32;98;111;111;108;101;97;110;91;51;93;91;53;93; @@ -63709,7 +66375,7 @@ lösung: vb-wald-loesung.visustruct 105;110;112;117;116;58;32;105;110;116;32;112;108;97;116;122;32;34;80;108;97;116;122;34; -`,DS=` +`,dT=` 98;111;111;108;101;97;110;91;93;91;93;32;115;105;116;122;101;32;61;32;110;101;119;32;98;111;111;108;101;97;110;91;51;93;91;53;93; @@ -63757,7 +66423,7 @@ lösung: vb-wald-loesung.visustruct -`,BS=` +`,hT=` 98;111;111;108;101;97;110;91;93;91;93;32;115;105;116;122;101;32;61;32;110;101;119;32;98;111;111;108;101;97;110;91;51;93;91;53;93; @@ -63781,7 +66447,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;82;101;105;104;101;32;49;44;32;80;108;97;116;122;32;50;32;118;101;114;107;97;117;102;116;63;32;34;32;43;32;115;105;116;122;101;91;49;93;91;50;93; -`,OS=` +`,gT=` 105;110;116;32;122;97;104;108;32;61;32;52; @@ -63796,7 +66462,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;69;114;103;101;98;110;105;115;58;32;34;32;43;32;101;114;103;101;98;110;105;115; -`,MS=` +`,pT=` 105;110;116;32;122;97;104;108;32;61;32;52; @@ -63811,7 +66477,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;69;114;103;101;98;110;105;115;58;32;34;32;43;32;101;114;103;101;98;110;105;115; -`,ZS=` +`,fT=` 105;110;116;32;115;101;107;117;110;100;101;110;32;61;32;50;48;48; @@ -63826,7 +66492,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;109;105;110;117;116;101;110;32;43;32;34;32;109;105;110;32;34;32;43;32;114;101;115;116;32;43;32;34;32;115;34; -`,LS=` +`,bT=` 105;110;116;32;115;101;107;117;110;100;101;110;32;61;32;50;48;48; @@ -63841,7 +66507,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;109;105;110;117;116;101;110;32;43;32;34;32;109;105;110;32;34;32;43;32;114;101;115;116;32;43;32;34;32;115;34; -`,WS=` +`,xT=` 83;116;114;105;110;103;32;110;97;109;101;32;61;32;34;76;117;100;119;105;103;34; @@ -63853,7 +66519,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;110;97;109;101;32;43;32;34;32;105;115;116;32;34;32;43;32;97;108;116;101;114;32;43;32;34;32;74;97;104;114;101;32;97;108;116;46;34; -`,ES=` +`,vT=` 83;116;114;105;110;103;32;110;97;109;101;32;61;32;34;76;117;100;119;105;103;34; @@ -63865,7 +66531,7 @@ lösung: vb-wald-loesung.visustruct 115;121;115;116;101;109;46;111;117;116;46;112;114;105;110;116;108;110;40;110;97;109;101;32;43;32;34;32;105;115;116;32;34;32;43;32;65;108;116;101;114;32;43;32;34;32;74;97;104;114;101;32;97;108;116;46;34;41; -`,NS=` +`,yT=` 83;116;114;105;110;103;32;110;97;109;101;32;61;32;34;76;117;100;119;105;103;34; @@ -63883,7 +66549,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;71;114;246;223;101;58;32;34;32;43;32;103;114;111;101;115;115;101;32;43;32;34;32;109;34; -`,FS=` +`,wT=` 105;110;116;32;122;97;104;108;32;61;32;51; @@ -63898,7 +66564,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;122;97;104;108; -`,RS=` +`,zT=` 105;110;116;32;122;97;104;108;32;61;32;50; @@ -63913,7 +66579,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;122;97;104;108; -`,JS=` +`,IT=` 111;117;116;112;117;116;58;32;122;97;104;108; @@ -63928,7 +66594,7 @@ lösung: vb-wald-loesung.visustruct 122;97;104;108;32;61;32;122;97;104;108;32;43;32;51; -`,GS=` +`,kT=` 83;116;114;105;110;103;32;108;105;110;107;115;32;61;32;34;83;97;102;116;34; @@ -63952,7 +66618,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;82;101;99;104;116;115;58;32;34;32;43;32;114;101;99;104;116;115; -`,HS=` +`,ST=` 83;116;114;105;110;103;32;108;105;110;107;115;32;61;32;34;83;97;102;116;34; @@ -63967,7 +66633,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;82;101;99;104;116;115;58;32;34;32;43;32;114;101;99;104;116;115; -`,VS=` +`,TT=` 105;110;116;32;97;32;61;32;53; @@ -63991,7 +66657,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;98;32;61;32;34;32;43;32;98; -`,qS=` +`,_T=` 105;110;116;32;97;108;116;101;114;32;61;32;49;52; @@ -64009,7 +66675,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;71;114;246;223;101;58;32;34;32;43;32;103;114;111;101;115;115;101;32;43;32;34;32;109;34; -`,QS=` +`,jT=` 105;110;116;32;109;105;110;117;116;101;110;32;61;32;49;51;53; @@ -64024,7 +66690,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;115;116;117;110;100;101;110;32;43;32;34;32;83;116;117;110;100;101;110;32;117;110;100;32;34;32;43;32;114;101;115;116;32;43;32;34;32;77;105;110;117;116;101;110;34; -`,US=` +`,AT=` 105;110;116;32;97;110;122;97;104;108;32;61;32;51; @@ -64039,7 +66705,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;71;101;115;97;109;116;58;32;34;32;43;32;103;101;115;97;109;116;80;114;101;105;115;32;43;32;34;32;69;117;114;111;34; -`,YS=` +`,CT=` 105;110;116;32;103;117;116;104;97;98;101;110;32;61;32;50;48; @@ -64054,7 +66720,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;220;98;114;105;103;58;32;34;32;43;32;103;117;116;104;97;98;101;110; -`,$S=` +`,DT=` 105;110;116;32;103;117;116;104;97;98;101;110;32;61;32;50;48; @@ -64069,7 +66735,7 @@ lösung: vb-wald-loesung.visustruct 103;117;116;104;97;98;101;110;32;61;32;103;117;116;104;97;98;101;110;32;45;32;112;114;101;105;115; -`,KS=` +`,PT=` 105;110;116;32;112;114;101;105;115;32;61;32;57; @@ -64084,7 +66750,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;71;101;115;97;109;116;58;32;34;32;43;32;103;101;115;97;109;116; -`,XS=` +`,BT=` 105;110;116;32;115;116;117;101;99;107;101;32;61;32;56; @@ -64099,7 +66765,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;74;101;100;101;114;32;98;101;107;111;109;109;116;32;34;32;43;32;112;114;111;80;101;114;115;111;110;32;43;32;34;32;83;116;252;99;107;101;46;34; -`,eT=` +`,OT=` 105;110;116;32;115;116;117;101;99;107;101;32;61;32;56; @@ -64114,7 +66780,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;74;101;100;101;114;32;98;101;107;111;109;109;116;32;34;32;43;32;112;114;111;112;101;114;115;111;110;32;43;32;34;32;83;116;252;99;107;101;46;34; -`,tT=` +`,MT=` 105;110;116;32;108;97;101;110;103;101;32;61;32;55; @@ -64135,7 +66801,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;85;109;102;97;110;103;58;32;34;32;43;32;117;109;102;97;110;103; -`,nT=` +`,ZT=` 105;110;116;32;115;101;107;117;110;100;101;110;32;61;32;50;48;48; @@ -64150,7 +66816,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;109;105;110;117;116;101;110;32;43;32;34;32;77;105;110;117;116;101;110;32;117;110;100;32;34;32;43;32;114;101;115;116;32;43;32;34;32;83;101;107;117;110;100;101;110;34; -`,iT=` +`,LT=` 105;110;116;32;115;101;107;117;110;100;101;110;32;61;32;50;48;48; @@ -64159,7 +66825,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;109;105;110;117;116;101;110;32;43;32;34;32;77;105;110;117;116;101;110;32;117;110;100;32;34;32;43;32;114;101;115;116;32;43;32;34;32;83;101;107;117;110;100;101;110;34; -`,aT=` +`,WT=` 105;110;116;32;108;97;101;110;103;101;32;61;32;53; @@ -64174,7 +66840,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;102;108;97;101;99;104;101; -`,sT=` +`,ET=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;110;97;109;101;32;34;87;105;101;32;104;101;105;223;116;32;100;117;63;34; @@ -64183,7 +66849,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;72;97;108;108;111;32;34;32;43;32;110;97;109;101;32;43;32;34;33;34; -`,rT=` +`,NT=` 105;110;112;117;116;58;32;105;110;116;32;97;32;34;69;114;115;116;101;32;90;97;104;108;63;34; @@ -64198,7 +66864,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;117;109;109;101;58;32;34;32;43;32;115;117;109;109;101; -`,oT=` +`,FT=` 105;110;112;117;116;58;32;105;110;116;32;97;32;34;69;114;115;116;101;32;90;97;104;108;63;34; @@ -64210,7 +66876,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;117;109;109;101;58;32;34;32;43;32;40;97;32;43;32;98;41; -`,lT=` +`,RT=` 105;110;112;117;116;58;32;105;110;116;32;97;32;34;69;114;115;116;101;32;90;97;104;108;63;34; @@ -64222,7 +66888,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;117;109;109;101;58;32;34;32;43;32;97;32;43;32;98; -`,uT=` +`,JT=` 105;110;112;117;116;58;32;105;110;116;32;97;108;116;101;114;32;34;87;105;101;32;97;108;116;32;98;105;115;116;32;100;117;63;34; @@ -64231,7 +66897,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;78;228;99;104;115;116;101;115;32;74;97;104;114;32;98;105;115;116;32;100;117;32;34;32;43;32;40;97;108;116;101;114;32;43;32;49;41; -`,mT=` +`,GT=` 105;110;112;117;116;58;32;105;110;116;32;97;108;116;101;114;32;34;87;105;101;32;97;108;116;32;98;105;115;116;32;100;117;63;34; @@ -64240,7 +66906,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;78;228;99;104;115;116;101;115;32;74;97;104;114;32;98;105;115;116;32;100;117;32;34;32;43;32;40;65;108;116;101;114;32;43;32;49;41; -`,cT=` +`,HT=` 105;110;112;117;116;58;32;105;110;116;32;106;97;104;114;101;32;34;87;105;101;32;97;108;116;32;98;105;115;116;32;100;117;63;34; @@ -64252,7 +66918,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;68;97;115;32;115;105;110;100;32;101;116;119;97;32;34;32;43;32;116;97;103;101;32;43;32;34;32;84;97;103;101;46;34; -`,dT=` +`,VT=` 105;110;112;117;116;58;32;100;111;117;98;108;101;32;120;32;34;69;114;115;116;101;32;90;97;104;108;63;34; @@ -64267,7 +66933,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;77;105;116;116;101;108;119;101;114;116;58;32;34;32;43;32;109;105;116;116;101;108; -`,hT=` +`,qT=` 105;110;112;117;116;58;32;105;110;116;32;97;32;34;69;114;115;116;101;32;90;97;104;108;63;34; @@ -64288,7 +66954,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;114;111;100;117;107;116;58;32;34;32;43;32;112;114;111;100;117;107;116; -`,gT=` +`,QT=` 105;110;112;117;116;58;32;105;110;116;32;97;108;116;101;114;32;34;87;105;101;32;97;108;116;32;98;105;115;116;32;100;117;63;34; @@ -64307,7 +66973,7 @@ lösung: vb-wald-loesung.visustruct -`,pT=` +`,UT=` 105;110;112;117;116;58;32;105;110;116;32;122;97;104;108;32;34;90;97;104;108;63;34; @@ -64329,7 +66995,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;122;97;104;108; -`,fT=` +`,YT=` 105;110;112;117;116;58;32;105;110;116;32;122;97;104;108;32;34;90;97;104;108;63;34; @@ -64348,7 +67014,7 @@ lösung: vb-wald-loesung.visustruct -`,bT=` +`,$T=` 105;110;116;32;112;117;110;107;116;101;32;61;32;48; @@ -64366,7 +67032,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;117;110;107;116;101;58;32;34;32;43;32;112;117;110;107;116;101; -`,xT=` +`,KT=` 105;110;116;32;112;117;110;107;116;101;32;61;32;48; @@ -64384,7 +67050,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;117;110;107;116;101;58;32;34;32;43;32;112;117;110;107;116;101; -`,vT=` +`,XT=` 105;110;116;32;112;117;110;107;116;101;32;61;32;49;48; @@ -64399,7 +67065,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;117;110;107;116;101;58;32;34;32;43;32;112;117;110;107;116;101; -`,yT=` +`,e_=` 105;110;116;32;112;117;110;107;116;101;32;61;32;49;48; @@ -64414,7 +67080,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;117;110;107;116;101;58;32;34;32;43;32;112;117;110;107;116;101; -`,wT=` +`,t_=` 105;110;116;32;112;114;101;105;115;32;61;32;56; @@ -64432,7 +67098,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;71;101;115;97;109;116;58;32;34;32;43;32;103;101;115;97;109;116; -`,zT=` +`,n_=` 105;110;116;32;112;114;101;105;115;32;61;32;56; @@ -64450,7 +67116,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;71;101;115;97;109;116;58;32;34;32;43;32;103;101;115;97;109;116; -`,IT=` +`,i_=` 105;110;112;117;116;58;32;105;110;116;32;97;32;34;69;114;115;116;101;32;90;97;104;108;63;34; @@ -64472,7 +67138,7 @@ lösung: vb-wald-loesung.visustruct -`,kT=` +`,a_=` 105;110;112;117;116;58;32;100;111;117;98;108;101;32;112;114;101;105;115;32;34;80;114;101;105;115;32;105;110;32;69;117;114;111;63;34; @@ -64494,7 +67160,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;90;117;32;122;97;104;108;101;110;58;32;34;32;43;32;112;114;101;105;115;32;43;32;34;32;69;117;114;111;34; -`,ST=` +`,s_=` 105;110;112;117;116;58;32;105;110;116;32;110;111;116;101;32;34;78;111;116;101;63;34; @@ -64513,7 +67179,7 @@ lösung: vb-wald-loesung.visustruct -`,TT=` +`,r_=` 105;110;112;117;116;58;32;105;110;116;32;112;117;110;107;116;101;32;34;87;105;101;32;118;105;101;108;101;32;80;117;110;107;116;101;63;34; @@ -64532,7 +67198,7 @@ lösung: vb-wald-loesung.visustruct -`,_T=` +`,o_=` 105;110;112;117;116;58;32;105;110;116;32;97;108;116;101;114;32;34;87;105;101;32;97;108;116;32;98;105;115;116;32;100;117;63;34; @@ -64551,7 +67217,7 @@ lösung: vb-wald-loesung.visustruct -`,jT=` +`,l_=` 105;110;112;117;116;58;32;105;110;116;32;97;108;116;101;114;32;34;87;105;101;32;97;108;116;32;98;105;115;116;32;100;117;63;34; @@ -64570,7 +67236,7 @@ lösung: vb-wald-loesung.visustruct -`,CT=` +`,u_=` 105;110;116;32;97;108;116;101;114;32;61;32;49;53; @@ -64589,7 +67255,7 @@ lösung: vb-wald-loesung.visustruct -`,AT=` +`,m_=` 105;110;116;32;97;108;116;101;114;32;61;32;49;53; @@ -64608,7 +67274,7 @@ lösung: vb-wald-loesung.visustruct -`,PT=` +`,c_=` 105;110;112;117;116;58;32;105;110;116;32;97;108;116;101;114;32;34;87;105;101;32;97;108;116;32;98;105;115;116;32;100;117;63;34; @@ -64627,7 +67293,7 @@ lösung: vb-wald-loesung.visustruct -`,DT=` +`,d_=` 105;110;112;117;116;58;32;105;110;116;32;110;111;116;101;32;34;78;111;116;101;63;34; @@ -64646,7 +67312,7 @@ lösung: vb-wald-loesung.visustruct -`,BT=` +`,h_=` 105;110;112;117;116;58;32;105;110;116;32;106;97;104;114;32;34;74;97;104;114;63;34; @@ -64665,7 +67331,7 @@ lösung: vb-wald-loesung.visustruct -`,OT=` +`,g_=` 105;110;112;117;116;58;32;105;110;116;32;116;97;103;32;34;84;97;103;32;40;49;32;98;105;115;32;55;41;63;34; @@ -64684,7 +67350,7 @@ lösung: vb-wald-loesung.visustruct -`,MT=` +`,p_=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;102;97;114;98;101;32;34;87;101;108;99;104;101;32;70;97;114;98;101;32;104;97;116;32;100;105;101;32;65;109;112;101;108;63;34; @@ -64713,7 +67379,7 @@ lösung: vb-wald-loesung.visustruct -`,ZT=` +`,f_=` 105;110;112;117;116;58;32;105;110;116;32;119;97;104;108;32;34;49;32;87;97;115;115;101;114;44;32;50;32;83;97;102;116;44;32;51;32;75;97;107;97;111;34; @@ -64742,7 +67408,7 @@ lösung: vb-wald-loesung.visustruct -`,LT=` +`,b_=` 105;110;112;117;116;58;32;105;110;116;32;116;97;103;32;34;87;101;108;99;104;101;114;32;84;97;103;32;40;49;32;98;105;115;32;55;41;63;34; @@ -64761,7 +67427,7 @@ lösung: vb-wald-loesung.visustruct -`,WT=` +`,x_=` 105;110;112;117;116;58;32;105;110;116;32;116;97;103;32;34;87;101;108;99;104;101;114;32;84;97;103;32;40;49;32;98;105;115;32;55;41;63;34; @@ -64780,7 +67446,7 @@ lösung: vb-wald-loesung.visustruct -`,ET=` +`,v_=` 105;110;116;32;116;97;103;32;61;32;55; @@ -64799,7 +67465,7 @@ lösung: vb-wald-loesung.visustruct -`,NT=` +`,y_=` 105;110;116;32;116;97;103;32;61;32;55; @@ -64818,7 +67484,7 @@ lösung: vb-wald-loesung.visustruct -`,FT=` +`,w_=` 105;110;112;117;116;58;32;105;110;116;32;115;116;117;110;100;101;32;34;87;105;101;32;115;112;228;116;32;105;115;116;32;101;115;32;40;110;117;114;32;100;105;101;32;83;116;117;110;100;101;41;63;34; @@ -64837,7 +67503,7 @@ lösung: vb-wald-loesung.visustruct -`,RT=` +`,z_=` 105;110;112;117;116;58;32;105;110;116;32;110;111;116;101;32;34;87;101;108;99;104;101;32;78;111;116;101;63;34; @@ -64881,7 +67547,7 @@ lösung: vb-wald-loesung.visustruct -`,JT=` +`,I_=` 105;110;112;117;116;58;32;105;110;116;32;97;32;34;69;114;115;116;101;32;90;97;104;108;34; @@ -64928,7 +67594,7 @@ lösung: vb-wald-loesung.visustruct -`,GT=` +`,k_=` 105;110;112;117;116;58;32;105;110;116;32;119;97;104;108;32;34;49;32;87;97;115;115;101;114;44;32;50;32;83;97;102;116;44;32;51;32;75;97;107;97;111;34; @@ -64967,7 +67633,7 @@ lösung: vb-wald-loesung.visustruct -`,HT=` +`,S_=` 84;97;115;115;101;32;97;117;102;32;100;101;110;32;84;105;115;99;104;32;115;116;101;108;108;101;110; @@ -64997,7 +67663,7 @@ lösung: vb-wald-loesung.visustruct 84;101;101;32;116;114;105;110;107;101;110; -`,VT=` +`,T_=` 65;117;102;115;116;101;104;101;110; @@ -65012,7 +67678,7 @@ lösung: vb-wald-loesung.visustruct 70;114;252;104;115;116;252;99;107;101;110; -`,qT=` +`,__=` 87;97;115;115;101;114;32;105;110;32;100;101;110;32;87;97;115;115;101;114;107;111;99;104;101;114;32;102;252;108;108;101;110; @@ -65033,7 +67699,7 @@ lösung: vb-wald-loesung.visustruct 84;101;101;98;101;117;116;101;108;32;104;101;114;97;117;115;110;101;104;109;101;110; -`,QT=` +`,j_=` 82;101;103;110;101;116;32;101;115;63; @@ -65052,7 +67718,7 @@ lösung: vb-wald-loesung.visustruct 76;111;115;103;101;104;101;110; -`,UT=` +`,A_=` 84;101;108;108;101;114;32;110;105;99;104;116;32;108;101;101;114; @@ -65066,7 +67732,7 @@ lösung: vb-wald-loesung.visustruct 84;101;108;108;101;114;32;97;98;114;228;117;109;101;110; -`,YT=` +`,C_=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;66;105;115;32;119;111;104;105;110;32;122;228;104;108;101;110;63;34; @@ -65086,7 +67752,7 @@ lösung: vb-wald-loesung.visustruct -`,$T=` +`,D_=` 105;110;116;32;122;97;104;108;32;61;32;51; @@ -65106,7 +67772,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;116;97;114;116;33;34; -`,KT=` +`,P_=` 105;110;116;32;122;97;104;108;32;61;32;51; @@ -65123,7 +67789,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;116;97;114;116;33;34; -`,XT=` +`,B_=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;70;97;107;117;108;116;228;116;32;118;111;110;32;119;101;108;99;104;101;114;32;90;97;104;108;63;34; @@ -65149,7 +67815,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;110;32;43;32;34;33;32;61;32;34;32;43;32;102;97;107;117;108;116;97;101;116; -`,e_=` +`,O_=` 105;110;112;117;116;58;32;105;110;116;32;97;32;34;69;114;115;116;101;32;90;97;104;108;63;34; @@ -65184,7 +67850,7 @@ lösung: vb-wald-loesung.visustruct -`,t_=` +`,M_=` 105;110;112;117;116;58;32;105;110;116;32;97;32;34;69;114;115;116;101;32;90;97;104;108;63;34; @@ -65219,7 +67885,7 @@ lösung: vb-wald-loesung.visustruct -`,n_=` +`,Z_=` 105;110;116;32;110;111;116;101;32;61;32;50; @@ -65243,7 +67909,7 @@ lösung: vb-wald-loesung.visustruct -`,i_=` +`,L_=` 105;110;116;32;110;111;116;101;32;61;32;50; @@ -65267,7 +67933,7 @@ lösung: vb-wald-loesung.visustruct -`,a_=` +`,W_=` 105;110;112;117;116;58;32;105;110;116;32;122;97;104;108;32;34;87;101;108;99;104;101;32;90;97;104;108;63;34; @@ -65296,7 +67962,7 @@ lösung: vb-wald-loesung.visustruct -`,s_=` +`,E_=` 105;110;112;117;116;58;32;105;110;116;32;122;97;104;108;32;34;83;116;97;114;116;122;97;104;108;34; @@ -65319,7 +67985,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;115;99;104;114;105;116;116;101; -`,r_=` +`,N_=` 105;110;116;32;122;97;104;108;32;61;32;48; @@ -65336,7 +68002,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;68;97;110;107;101;33;34; -`,o_=` +`,F_=` 105;110;116;32;105;32;61;32;49;48; @@ -65353,7 +68019,7 @@ lösung: vb-wald-loesung.visustruct -`,l_=` +`,R_=` 105;110;112;117;116;58;32;105;110;116;32;122;105;101;108;32;34;83;112;97;114;122;105;101;108;63;34; @@ -65379,7 +68045,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;87;111;99;104;101;110;58;32;34;32;43;32;119;111;99;104;101;110; -`,u_=` +`,J_=` 105;110;112;117;116;58;32;105;110;116;32;122;105;101;108;32;34;83;112;97;114;122;105;101;108;63;34; @@ -65405,7 +68071,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;87;111;99;104;101;110;58;32;34;32;43;32;119;111;99;104;101;110; -`,m_=` +`,G_=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;66;105;115;32;119;111;104;105;110;63;34; @@ -65425,7 +68091,7 @@ lösung: vb-wald-loesung.visustruct -`,c_=` +`,H_=` 105;110;116;32;122;97;104;108;32;61;32;51; @@ -65445,7 +68111,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;116;97;114;116;33;34; -`,d_=` +`,V_=` 105;110;116;32;122;97;104;108;32;61;32;51; @@ -65465,7 +68131,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;116;97;114;116;33;34; -`,h_=` +`,q_=` 105;110;116;32;110;111;116;101;32;61;32;48; @@ -65482,7 +68148,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;68;101;105;110;101;32;78;111;116;101;58;32;34;32;43;32;110;111;116;101; -`,g_=` +`,Q_=` 105;110;116;32;115;117;109;109;101;32;61;32;48; @@ -65505,7 +68171,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;115;117;109;109;101; -`,p_=` +`,U_=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;83;116;97;114;116;122;97;104;108;34; @@ -65524,7 +68190,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;76;111;115;33;34; -`,f_=` +`,Y_=` 105;110;112;117;116;58;32;105;110;116;32;122;97;104;108;32;34;87;101;108;99;104;101;32;82;101;105;104;101;63;34; @@ -65543,7 +68209,7 @@ lösung: vb-wald-loesung.visustruct -`,b_=` +`,$_=` 105;110;116;32;105;32;61;32;49; @@ -65556,7 +68222,7 @@ lösung: vb-wald-loesung.visustruct -`,x_=` +`,K_=` 105;110;112;117;116;58;32;105;110;116;32;122;97;104;108;32;34;83;116;97;114;116;122;97;104;108;63;34; @@ -65573,7 +68239,7 @@ lösung: vb-wald-loesung.visustruct -`,v_=` +`,X_=` 105;110;112;117;116;58;32;105;110;116;32;122;97;104;108;32;34;83;116;97;114;116;122;97;104;108;63;34; @@ -65590,7 +68256,7 @@ lösung: vb-wald-loesung.visustruct -`,y_=` +`,ej=` 105;110;116;32;122;97;104;108;32;61;32;49; @@ -65610,7 +68276,7 @@ lösung: vb-wald-loesung.visustruct -`,w_=` +`,tj=` 105;110;116;32;122;97;104;108;32;61;32;49; @@ -65630,7 +68296,7 @@ lösung: vb-wald-loesung.visustruct -`,z_=` +`,nj=` 105;110;112;117;116;58;32;105;110;116;32;122;97;104;108;32;34;83;116;97;114;116;122;97;104;108;63;34; @@ -65647,7 +68313,7 @@ lösung: vb-wald-loesung.visustruct -`,I_=` +`,ij=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;66;105;115;32;122;117;32;119;101;108;99;104;101;114;32;90;97;104;108;63;34; @@ -65669,7 +68335,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;115;117;109;109;101; -`,k_=` +`,aj=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;87;105;101;32;118;105;101;108;101;32;90;101;105;108;101;110;63;34; @@ -65698,7 +68364,7 @@ lösung: vb-wald-loesung.visustruct -`,S_=` +`,sj=` 105;110;116;32;97;110;122;97;104;108;32;61;32;48; @@ -65730,7 +68396,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;97;110;122;97;104;108; -`,T_=` +`,rj=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;66;105;115;32;122;117;32;119;101;108;99;104;101;114;32;90;97;104;108;63;34; @@ -65762,7 +68428,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;97;110;122;97;104;108; -`,__=` +`,oj=` 105;110;112;117;116;58;32;105;110;116;32;114;101;105;104;101;32;34;87;101;108;99;104;101;32;82;101;105;104;101;63;34; @@ -65778,7 +68444,7 @@ lösung: vb-wald-loesung.visustruct -`,j_=` +`,lj=` 105;110;112;117;116;58;32;105;110;116;32;114;101;105;104;101;32;34;87;101;108;99;104;101;32;82;101;105;104;101;63;34; @@ -65794,7 +68460,7 @@ lösung: vb-wald-loesung.visustruct -`,C_=` +`,uj=` 105;110;116;32;104;111;101;104;101;32;61;32;48; @@ -65813,7 +68479,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;72;246;104;101;58;32;34;32;43;32;104;111;101;104;101;32;43;32;34;32;99;109;34; -`,A_=` +`,mj=` 105;110;116;32;115;116;117;102;101;32;61;32;49; @@ -65829,7 +68495,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;72;246;104;101;58;32;34;32;43;32;104;111;101;104;101;32;43;32;34;32;99;109;34; -`,P_=` +`,cj=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;66;105;115;32;122;117;32;119;101;108;99;104;101;114;32;90;97;104;108;63;34; @@ -65845,7 +68511,7 @@ lösung: vb-wald-loesung.visustruct -`,D_=` +`,dj=` 105;110;112;117;116;58;32;105;110;116;32;98;114;101;105;116;101;32;34;66;114;101;105;116;101;34; @@ -65877,7 +68543,7 @@ lösung: vb-wald-loesung.visustruct -`,B_=` +`,hj=` 105;110;116;91;93;32;122;97;104;108;101;110;32;61;32;123;50;44;32;52;44;32;54;44;32;56;44;32;49;48;125; @@ -65893,7 +68559,7 @@ lösung: vb-wald-loesung.visustruct -`,O_=` +`,gj=` 105;110;116;91;93;32;119;101;114;116;101;32;61;32;123;52;44;32;56;44;32;49;53;44;32;49;54;44;32;50;51;44;32;52;50;125; @@ -65908,7 +68574,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;119;101;114;116;101;46;108;101;110;103;116;104; -`,M_=` +`,pj=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;66;105;115;32;122;117;32;119;101;108;99;104;101;114;32;90;97;104;108;63;34; @@ -65940,7 +68606,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;65;110;122;97;104;108;58;32;34;32;43;32;97;110;122;97;104;108; -`,Z_=` +`,fj=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;66;105;115;32;122;117;32;119;101;108;99;104;101;114;32;90;97;104;108;63;34; @@ -65972,7 +68638,7 @@ lösung: vb-wald-loesung.visustruct -`,L_=` +`,bj=` 105;110;116;32;105;32;61;32;49; @@ -65995,7 +68661,7 @@ lösung: vb-wald-loesung.visustruct -`,W_=` +`,xj=` 105;110;116;32;105;32;61;32;49; @@ -66018,7 +68684,7 @@ lösung: vb-wald-loesung.visustruct -`,E_=` +`,vj=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;87;105;101;32;118;105;101;108;101;32;83;116;117;102;101;110;63;34; @@ -66047,7 +68713,7 @@ lösung: vb-wald-loesung.visustruct -`,N_=` +`,yj=` 83;116;114;105;110;103;91;93;32;110;97;109;101;110;32;61;32;110;101;119;32;83;116;114;105;110;103;91;51;93; @@ -66066,7 +68732,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;69;114;115;116;101;114;32;78;97;109;101;58;32;34;32;43;32;110;97;109;101;110;91;48;93; -`,F_=` +`,wj=` 105;110;116;91;93;32;122;97;104;108;101;110;32;61;32;110;101;119;32;105;110;116;91;52;93; @@ -66092,7 +68758,7 @@ lösung: vb-wald-loesung.visustruct -`,R_=` +`,zj=` 105;110;116;91;93;32;122;97;104;108;101;110;32;61;32;110;101;119;32;105;110;116;91;53;93; @@ -66143,7 +68809,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;77;97;120;105;109;117;109;58;32;34;32;43;32;109;97;120; -`,J_=` +`,Ij=` 105;110;116;91;93;32;112;117;110;107;116;101;32;61;32;123;49;50;44;32;55;44;32;49;57;44;32;52;125; @@ -66184,7 +68850,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;77;97;120;105;109;117;109;58;32;34;32;43;32;109;97;120; -`,G_=` +`,kj=` 105;110;116;32;115;117;109;109;101;32;61;32;48; @@ -66207,7 +68873,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;117;109;109;101;58;32;34;32;43;32;115;117;109;109;101; -`,H_=` +`,Sj=` 105;110;116;32;115;117;109;109;101;32;61;32;48; @@ -66237,7 +68903,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;117;109;109;101;58;32;34;32;43;32;115;117;109;109;101; -`,V_=` +`,Tj=` 105;110;112;117;116;58;32;105;110;116;32;108;97;101;110;103;101;32;34;76;228;110;103;101;63;34; @@ -66252,13 +68918,13 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;70;108;228;99;104;101;58;32;34;32;43;32;102; -`,q_=` +`,_j=` 114;101;116;117;114;110;32;97;32;42;32;98; -`,Q_=` +`,jj=` 122;101;105;103;101;66;101;103;114;117;101;115;115;117;110;103;40;41; @@ -66270,7 +68936,7 @@ lösung: vb-wald-loesung.visustruct 122;101;105;103;101;69;114;103;101;98;110;105;115;40;41; -`,U_=` +`,Aj=` 105;110;116;91;93;32;116;101;109;112;101;114;97;116;117;114;101;110;32;61;32;123;45;53;44;32;45;50;44;32;45;56;44;32;45;51;125; @@ -66302,7 +68968,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;72;246;99;104;115;116;101;32;84;101;109;112;101;114;97;116;117;114;58;32;34;32;43;32;109;97;120; -`,Y_=` +`,Cj=` 105;110;116;91;93;32;116;101;109;112;101;114;97;116;117;114;101;110;32;61;32;123;45;53;44;32;45;50;44;32;45;56;44;32;45;51;125; @@ -66334,7 +69000,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;72;246;99;104;115;116;101;32;84;101;109;112;101;114;97;116;117;114;58;32;34;32;43;32;109;97;120; -`,$_=` +`,Dj=` 105;110;116;91;93;32;112;117;110;107;116;101;32;61;32;123;52;44;32;55;44;32;50;44;32;53;125; @@ -66356,7 +69022,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;117;109;109;101;58;32;34;32;43;32;115;117;109;109;101; -`,K_=` +`,Pj=` 105;110;116;91;93;32;112;117;110;107;116;101;32;61;32;123;52;44;32;55;44;32;50;44;32;53;125; @@ -66378,7 +69044,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;117;109;109;101;58;32;34;32;43;32;115;117;109;109;101; -`,X_=` +`,Bj=` 105;110;116;91;93;32;110;111;116;101;110;32;61;32;123;50;44;32;51;44;32;49;44;32;52;125; @@ -66400,7 +69066,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;117;109;109;101;58;32;34;32;43;32;115;117;109;109;101; -`,ej=` +`,Oj=` 105;110;112;117;116;58;32;105;110;116;32;122;97;104;108;32;34;87;101;108;99;104;101;32;90;97;104;108;63;34; @@ -66412,7 +69078,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;68;97;115;32;81;117;97;100;114;97;116;32;105;115;116;32;34;32;43;32;113; -`,tj=` +`,Mj=` 105;110;116;32;101;114;103;101;98;110;105;115;32;61;32;120;32;42;32;120; @@ -66421,7 +69087,7 @@ lösung: vb-wald-loesung.visustruct 114;101;116;117;114;110;32;101;114;103;101;98;110;105;115; -`,nj=` +`,Zj=` 122;101;105;103;101;84;105;116;101;108;40;41; @@ -66433,7 +69099,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;72;97;108;108;111;32;34;32;43;32;110;97;109;101; -`,ij=` +`,Lj=` 111;117;116;112;117;116;58;32;34;87;105;108;108;107;111;109;109;101;110;32;122;117;109;32;81;117;105;122;33;34; @@ -66442,7 +69108,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;68;117;32;98;101;107;111;109;109;115;116;32;100;114;101;105;32;70;114;97;103;101;110;46;34; -`,aj=` +`,Wj=` 122;101;105;103;101;83;117;109;109;101;40;51;44;32;52;41; @@ -66454,7 +69120,7 @@ lösung: vb-wald-loesung.visustruct 122;101;105;103;101;83;117;109;109;101;40;120;44;32;120;32;43;32;49;41; -`,sj=` +`,Ej=` 105;110;116;32;115;117;109;109;101;32;61;32;97;32;43;32;98; @@ -66463,7 +69129,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;97;32;43;32;34;32;43;32;34;32;43;32;98;32;43;32;34;32;61;32;34;32;43;32;115;117;109;109;101; -`,rj=` +`,Nj=` 105;110;112;117;116;58;32;105;110;116;32;115;116;97;114;116;32;34;83;116;97;114;116;119;101;114;116;34; @@ -66486,7 +69152,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;76;111;115;33;34; -`,oj=` +`,Fj=` 105;110;112;117;116;58;32;105;110;116;32;115;116;97;114;116;32;34;83;116;97;114;116;119;101;114;116;34; @@ -66509,7 +69175,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;76;111;115;34; -`,lj=` +`,Rj=` 105;110;116;91;93;91;93;32;112;117;110;107;116;101;32;61;32;123;123;51;44;32;53;44;32;50;125;44;32;123;52;44;32;49;44;32;54;125;125; @@ -66531,7 +69197,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;112;105;101;108;101;114;32;50;58;32;34;32;43;32;115;117;109;109;101; -`,uj=` +`,Jj=` 105;110;116;91;93;91;93;32;112;117;110;107;116;101;32;61;32;123;123;51;44;32;53;44;32;50;125;44;32;123;52;44;32;49;44;32;54;125;125; @@ -66553,7 +69219,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;112;105;101;108;101;114;32;50;58;32;34;32;43;32;115;117;109;109;101; -`,mj=` +`,Gj=` 105;110;116;91;93;91;93;32;112;117;110;107;116;101;32;61;32;123;123;51;44;32;53;125;44;32;123;52;44;32;50;125;125; @@ -66562,7 +69228,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;112;105;101;108;101;114;32;50;44;32;82;117;110;100;101;32;49;58;32;34;32;43;32;112;117;110;107;116;101;91;49;93;91;48;93; -`,cj=` +`,Hj=` 105;110;116;91;93;91;93;32;112;117;110;107;116;101;32;61;32;123;123;51;44;32;53;125;44;32;123;52;44;32;50;125;125; @@ -66571,7 +69237,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;112;105;101;108;101;114;32;50;44;32;82;117;110;100;101;32;49;58;32;34;32;43;32;80;117;110;107;116;101;91;49;93;91;48;93; -`,dj=` +`,Vj=` 105;110;116;91;93;91;93;32;112;117;110;107;116;101;32;61;32;123;123;51;44;32;53;125;44;32;123;52;44;32;49;125;44;32;123;50;44;32;50;125;125; @@ -66600,7 +69266,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;117;109;109;101;58;32;34;32;43;32;115;117;109;109;101; -`,hj=` +`,qj=` 105;110;116;32;115;117;109;109;101;32;61;32;48; @@ -66623,7 +69289,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;115;117;109;109;101; -`,gj=` +`,Qj=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;66;105;115;32;119;111;104;105;110;63;34; @@ -66645,7 +69311,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;115;117;109;109;101; -`,pj=` +`,Uj=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;66;105;115;32;119;111;104;105;110;63;34; @@ -66667,7 +69333,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;115;117;109;109;101; -`,fj=` +`,Yj=` 105;110;112;117;116;58;32;105;110;116;32;122;97;104;108;32;34;87;101;108;99;104;101;32;82;101;105;104;101;63;34; @@ -66699,7 +69365,7 @@ lösung: vb-wald-loesung.visustruct -`,bj=` +`,$j=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;90;97;104;108;32;101;105;110;103;101;98;101;110;34; @@ -66721,7 +69387,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;102;97;107;117;108;116;97;101;116; -`,xj=` +`,Kj=` 83;116;114;105;110;103;32;98;114;105;101;102;32;61;32;70;105;108;101;115;46;114;101;97;100;83;116;114;105;110;103;40;80;97;116;104;46;111;102;40;34;98;114;105;101;102;46;116;120;116;34;41;41; @@ -66753,13 +69419,13 @@ lösung: vb-wald-loesung.visustruct -`,vj=` +`,Xj=` 83;116;114;105;110;103;32;98;114;105;101;102;32;61;32;70;105;108;101;115;46;114;101;97;100;83;116;114;105;110;103;40;80;97;116;104;46;111;102;40;34;98;114;105;101;102;46;116;120;116;34;41;41; -`,yj=` +`,eA=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;118;111;114;110;97;109;101;32;34;86;111;114;110;97;109;101;63;34; @@ -66771,7 +69437,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;118;111;114;110;97;109;101;46;99;104;97;114;65;116;40;48;41;32;43;32;34;46;32;34;32;43;32;110;97;99;104;110;97;109;101;46;99;104;97;114;65;116;40;48;41;32;43;32;34;46;34; -`,wj=` +`,tA=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;118;111;114;110;97;109;101;32;34;86;111;114;110;97;109;101;63;34; @@ -66783,7 +69449,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;118;111;114;110;97;109;101;46;99;104;97;114;65;116;40;49;41;32;43;32;34;46;32;34;32;43;32;110;97;99;104;110;97;109;101;46;99;104;97;114;65;116;40;49;41;32;43;32;34;46;34; -`,zj=` +`,nA=` 83;116;114;105;110;103;32;110;97;109;101;32;61;32;34;76;117;100;119;105;103;34; @@ -66792,7 +69458,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;110;97;109;101;46;99;104;97;114;65;116;40;48;41;32;43;32;34;32;104;97;116;32;34;32;43;32;110;97;109;101;46;108;101;110;103;116;104;40;41;32;43;32;34;32;66;117;99;104;115;116;97;98;101;110;34; -`,Ij=` +`,iA=` 83;116;114;105;110;103;32;110;97;109;101;32;61;32;34;76;117;100;119;105;103;34; @@ -66801,7 +69467,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;110;97;109;101;46;99;104;97;114;97;116;40;48;41;32;43;32;34;32;104;97;116;32;34;32;43;32;110;97;109;101;46;76;101;110;103;116;104;40;41;32;43;32;34;32;66;117;99;104;115;116;97;98;101;110;34; -`,kj=` +`,aA=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;101;105;110;103;97;98;101;32;34;80;97;115;115;119;111;114;116;63;34; @@ -66820,7 +69486,7 @@ lösung: vb-wald-loesung.visustruct -`,Sj=` +`,sA=` 105;110;112;117;116;58;32;105;110;116;32;97;108;116;101;114;32;34;87;105;101;32;97;108;116;32;98;105;115;116;32;100;117;63;34; @@ -66849,7 +69515,7 @@ lösung: vb-wald-loesung.visustruct -`,Tj=` +`,rA=` 105;110;112;117;116;58;32;105;110;116;32;122;97;104;108;32;34;83;116;97;114;116;119;101;114;116;63;34; @@ -66869,7 +69535,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;69;110;100;101;34; -`,_j=` +`,oA=` 105;110;116;32;118;101;114;115;117;99;104;101;32;61;32;48; @@ -66902,7 +69568,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;86;101;114;115;117;99;104;101;58;32;34;32;43;32;118;101;114;115;117;99;104;101; -`,jj=` +`,lA=` 105;110;116;32;118;101;114;115;117;99;104;101;32;61;32;48; @@ -66935,7 +69601,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;86;101;114;115;117;99;104;101;58;32;34;32;43;32;118;101;114;115;117;99;104;101; -`,Cj=` +`,uA=` 105;110;116;32;115;117;109;109;101;32;61;32;48; @@ -66977,7 +69643,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;71;101;115;97;109;116;58;32;34;32;43;32;115;117;109;109;101; -`,Aj=` +`,mA=` 105;110;112;117;116;58;32;105;110;116;32;97;108;116;101;114;32;34;87;105;101;32;97;108;116;32;98;105;115;116;32;100;117;63;34; @@ -66999,7 +69665,7 @@ lösung: vb-wald-loesung.visustruct -`,Pj=` +`,cA=` 105;110;112;117;116;58;32;105;110;116;32;103;114;101;110;122;101;32;34;66;105;115;32;119;111;104;105;110;63;34; @@ -67015,7 +69681,7 @@ lösung: vb-wald-loesung.visustruct -`,Dj=` +`,dA=` 105;110;116;91;93;32;107;97;114;116;101;110;32;61;32;123;56;44;32;52;44;32;49;49;44;32;52;44;32;54;125; @@ -67054,7 +69720,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;111;115;105;116;105;111;110;58;32;34;32;43;32;112;111;115;105;116;105;111;110; -`,Bj=` +`,hA=` 105;110;116;91;93;32;107;97;114;116;101;110;32;61;32;123;56;44;32;52;44;32;49;49;44;32;52;44;32;54;125; @@ -67093,7 +69759,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;111;115;105;116;105;111;110;58;32;34;32;43;32;112;111;115;105;116;105;111;110; -`,Oj=` +`,gA=` 105;110;116;91;93;32;107;97;114;116;101;110;32;61;32;123;56;44;32;52;44;32;49;49;44;32;52;44;32;54;125; @@ -67128,7 +69794,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;111;115;105;116;105;111;110;58;32;34;32;43;32;112;111;115;105;116;105;111;110; -`,Mj=` +`,pA=` 105;110;116;91;93;32;107;97;114;116;101;110;32;61;32;123;56;44;32;52;44;32;49;49;44;32;52;44;32;54;125; @@ -67163,7 +69829,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;111;115;105;116;105;111;110;58;32;34;32;43;32;112;111;115;105;116;105;111;110; -`,Zj=` +`,fA=` 105;110;116;91;93;32;107;97;114;116;101;110;32;61;32;123;56;44;32;52;44;32;49;49;44;32;52;44;32;54;125; @@ -67198,7 +69864,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;65;110;122;97;104;108;58;32;34;32;43;32;97;110;122;97;104;108; -`,Lj=` +`,bA=` 111;117;116;112;117;116;58;32;34;71;117;116;101;110;32;77;111;114;103;101;110;34; @@ -67207,13 +69873,13 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;72;101;117;116;101;32;108;101;114;110;101;110;32;119;105;114;32;83;116;114;117;107;116;111;103;114;97;109;109;101;46;34; -`,Wj=` +`,xA=` 111;117;116;112;117;116;58;32;34;72;97;108;108;111;32;87;101;108;116;34; -`,Ej=` +`,vA=` 111;117;116;112;117;116;58;32;34;72;97;108;108;111;34; @@ -67222,7 +69888,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;73;99;104;32;108;101;114;110;101;32;83;116;114;117;107;116;111;103;114;97;109;109;101;34; -`,Nj=` +`,yA=` 105;110;112;117;116;58;32;105;110;116;32;122;97;104;108;32;34;83;116;97;114;116;122;97;104;108;63;34; @@ -67242,7 +69908,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;116;97;114;116;33;34; -`,Fj=` +`,wA=` 83;99;97;110;110;101;114;32;100;97;116;101;105;32;61;32;110;101;119;32;83;99;97;110;110;101;114;40;110;101;119;32;70;105;108;101;40;34;101;105;110;107;97;117;102;46;116;120;116;34;41;41; @@ -67283,7 +69949,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;97;110;122;97;104;108;32;43;32;34;32;90;101;105;108;101;110;32;103;101;115;112;101;105;99;104;101;114;116;34; -`,Rj=` +`,zA=` 83;99;97;110;110;101;114;32;100;97;116;101;105;32;61;32;110;101;119;32;83;99;97;110;110;101;114;40;110;101;119;32;70;105;108;101;40;34;101;105;110;107;97;117;102;46;116;120;116;34;41;41; @@ -67292,7 +69958,7 @@ lösung: vb-wald-loesung.visustruct 80;114;105;110;116;87;114;105;116;101;114;32;97;117;115;32;61;32;110;101;119;32;80;114;105;110;116;87;114;105;116;101;114;40;34;101;105;110;107;97;117;102;45;110;101;117;46;116;120;116;34;41; -`,Jj=` +`,IA=` 83;99;97;110;110;101;114;32;100;97;116;101;105;32;61;32;110;101;119;32;83;99;97;110;110;101;114;40;110;101;119;32;70;105;108;101;40;34;101;105;110;107;97;117;102;46;116;120;116;34;41;41; @@ -67318,13 +69984,13 @@ lösung: vb-wald-loesung.visustruct 100;97;116;101;105;46;99;108;111;115;101;40;41; -`,Gj=` +`,kA=` 83;99;97;110;110;101;114;32;100;97;116;101;105;32;61;32;110;101;119;32;83;99;97;110;110;101;114;40;110;101;119;32;70;105;108;101;40;34;101;105;110;107;97;117;102;46;116;120;116;34;41;41; -`,Hj=` +`,SA=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;108;101;115;101;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;108;111;103;98;117;99;104;46;116;120;116;34;41;41; @@ -67363,7 +70029,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;70;117;99;104;115;58;32;34;32;43;32;97;110;122;97;104;108; -`,Vj=` +`,TA=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;108;101;115;101;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;108;111;103;98;117;99;104;46;116;120;116;34;41;41; @@ -67372,7 +70038,7 @@ lösung: vb-wald-loesung.visustruct 83;116;114;105;110;103;32;122;101;105;108;101;32;61;32;108;101;115;101;114;46;114;101;97;100;76;105;110;101;40;41; -`,qj=` +`,_A=` 83;116;114;105;110;103;32;116;101;120;116;32;61;32;70;105;108;101;115;46;114;101;97;100;83;116;114;105;110;103;40;80;97;116;104;46;111;102;40;34;108;111;103;98;117;99;104;46;116;120;116;34;41;41; @@ -67407,7 +70073,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;76;228;110;103;115;116;101;114;32;69;105;110;116;114;97;103;58;32;34;32;43;32;108;97;101;110;103;115;116;101;114; -`,Qj=` +`,jA=` 83;116;114;105;110;103;32;116;101;120;116;32;61;32;70;105;108;101;115;46;114;101;97;100;83;116;114;105;110;103;40;80;97;116;104;46;111;102;40;34;108;111;103;98;117;99;104;46;116;120;116;34;41;41; @@ -67416,7 +70082,7 @@ lösung: vb-wald-loesung.visustruct 83;116;114;105;110;103;91;93;32;122;101;105;108;101;110;32;61;32;116;101;120;116;46;115;112;108;105;116;40;34;92;110;34;41; -`,Uj=` +`,AA=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;108;101;115;101;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;107;108;97;115;115;101;46;99;115;118;34;41;41; @@ -67470,7 +70136,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;66;101;115;116;101;32;78;111;116;101;32;105;110;32;69;110;103;108;105;115;99;104;58;32;34;32;43;32;98;101;115;116;101;114;78;97;109;101;32;43;32;34;32;40;34;32;43;32;98;101;115;116;101;78;111;116;101;32;43;32;34;41;34; -`,Yj=` +`,CA=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;108;101;115;101;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;107;108;97;115;115;101;46;99;115;118;34;41;41; @@ -67479,7 +70145,7 @@ lösung: vb-wald-loesung.visustruct 83;116;114;105;110;103;32;122;101;105;108;101;32;61;32;108;101;115;101;114;46;114;101;97;100;76;105;110;101;40;41; -`,$j=` +`,DA=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;108;101;115;101;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;107;108;97;115;115;101;46;99;115;118;34;41;41; @@ -67520,7 +70186,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;99;104;110;105;116;116;32;77;97;116;104;101;58;32;34;32;43;32;115;117;109;109;101;32;47;32;97;110;122;97;104;108; -`,Kj=` +`,PA=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;108;101;115;101;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;107;108;97;115;115;101;46;99;115;118;34;41;41; @@ -67529,7 +70195,7 @@ lösung: vb-wald-loesung.visustruct 83;116;114;105;110;103;32;122;101;105;108;101;32;61;32;108;101;115;101;114;46;114;101;97;100;76;105;110;101;40;41; -`,Xj=` +`,BA=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;108;101;115;101;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;122;111;111;46;106;115;111;110;34;41;41; @@ -67568,7 +70234,7 @@ lösung: vb-wald-loesung.visustruct 108;101;115;101;114;46;99;108;111;115;101;40;41; -`,eC=` +`,OA=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;108;101;115;101;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;122;111;111;46;106;115;111;110;34;41;41; @@ -67577,7 +70243,7 @@ lösung: vb-wald-loesung.visustruct 83;116;114;105;110;103;32;122;101;105;108;101;32;61;32;108;101;115;101;114;46;114;101;97;100;76;105;110;101;40;41; -`,tC=` +`,MA=` 83;116;114;105;110;103;91;93;32;110;97;109;101;110;32;61;32;123;34;76;117;100;119;105;103;34;44;32;34;90;111;114;97;34;44;32;34;70;117;99;104;115;34;125; @@ -67627,7 +70293,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;110;97;109;101;110;46;108;101;110;103;116;104;32;43;32;34;32;69;105;110;116;114;228;103;101;32;103;101;115;112;101;105;99;104;101;114;116;34; -`,nC=` +`,ZA=` 83;116;114;105;110;103;91;93;32;110;97;109;101;110;32;61;32;123;34;76;117;100;119;105;103;34;44;32;34;90;111;114;97;34;44;32;34;70;117;99;104;115;34;125; @@ -67645,7 +70311,7 @@ lösung: vb-wald-loesung.visustruct 97;117;115;46;99;108;111;115;101;40;41; -`,iC=` +`,LA=` 83;116;114;105;110;103;32;116;101;120;116;32;61;32;70;105;108;101;115;46;114;101;97;100;83;116;114;105;110;103;40;80;97;116;104;46;111;102;40;34;116;105;101;114;101;46;99;115;118;34;41;41; @@ -67698,7 +70364,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;40;122;101;105;108;101;110;46;108;101;110;103;116;104;32;45;32;49;41;32;43;32;34;32;84;105;101;114;101;32;103;101;115;112;101;105;99;104;101;114;116;34; -`,aC=` +`,WA=` 83;116;114;105;110;103;32;116;101;120;116;32;61;32;70;105;108;101;115;46;114;101;97;100;83;116;114;105;110;103;40;80;97;116;104;46;111;102;40;34;116;105;101;114;101;46;99;115;118;34;41;41; @@ -67719,7 +70385,7 @@ lösung: vb-wald-loesung.visustruct 97;117;115;46;99;108;111;115;101;40;41; -`,sC=` +`,EA=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;108;101;115;101;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;116;105;101;114;101;46;99;115;118;34;41;41; @@ -67763,7 +70429,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;97;110;122;97;104;108;32;43;32;34;32;83;228;116;122;101;32;103;101;115;112;101;105;99;104;101;114;116;34; -`,rC=` +`,NA=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;108;101;115;101;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;116;105;101;114;101;46;99;115;118;34;41;41; @@ -67784,7 +70450,7 @@ lösung: vb-wald-loesung.visustruct 97;117;115;46;99;108;111;115;101;40;41; -`,oC=` +`,FA=` 111;117;116;112;117;116;58;32;34;66;101;109;45;118;105;110;100;111;34; @@ -67796,7 +70462,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;65;100;101;117;115;34; -`,lC=` +`,RA=` 105;110;112;117;116;58;32;105;110;116;32;105;100;97;100;101;32;34;81;117;97;110;116;111;115;32;97;110;111;115;32;116;101;110;115;63;34; @@ -67815,7 +70481,7 @@ lösung: vb-wald-loesung.visustruct -`,uC=` +`,JA=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;108;101;105;116;111;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;108;97;110;99;97;109;101;110;116;111;46;99;115;118;34;41;41; @@ -67896,7 +70562,7 @@ lösung: vb-wald-loesung.visustruct 115;97;105;100;97;46;99;108;111;115;101;40;41; -`,mC=` +`,GA=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;108;101;105;116;111;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;108;97;110;99;97;109;101;110;116;111;46;99;115;118;34;41;41; @@ -67905,7 +70571,7 @@ lösung: vb-wald-loesung.visustruct 83;116;114;105;110;103;32;108;105;110;104;97;32;61;32;108;101;105;116;111;114;46;114;101;97;100;76;105;110;101;40;41; -`,cC=` +`,HA=` 105;110;116;91;93;32;112;111;110;116;111;115;32;61;32;110;101;119;32;105;110;116;91;53;93; @@ -67970,7 +70636,7 @@ lösung: vb-wald-loesung.visustruct -`,dC=` +`,VA=` 105;110;112;117;116;58;32;105;110;116;32;110;117;109;101;114;111;32;34;73;110;116;114;111;100;117;122;32;117;109;32;110;250;109;101;114;111;32;105;110;116;101;105;114;111;34; @@ -67996,7 +70662,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;98;105;110;97;114;105;111; -`,hC=` +`,qA=` 99;104;97;114;91;93;32;97;108;102;97;98;101;116;111;32;61;32;123;39;65;39;44;32;39;66;39;44;32;39;67;39;44;32;39;68;39;44;32;39;69;39;44;32;39;70;39;44;32;39;71;39;44;32;39;72;39;44;32;39;73;39;44;32;39;74;39;44;32;39;75;39;44;32;39;76;39;44;32;39;77;39;44;32;39;78;39;44;32;39;79;39;44;32;39;80;39;44;32;39;81;39;44;32;39;82;39;44;32;39;83;39;44;32;39;84;39;44;32;39;85;39;44;32;39;86;39;44;32;39;87;39;44;32;39;88;39;44;32;39;89;39;44;32;39;90;39;125; @@ -68050,13 +70716,13 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;115;101;103;114;101;100;111; -`,gC=` +`,QA=` 99;104;97;114;91;93;32;97;108;102;97;98;101;116;111;32;61;32;123;39;65;39;44;32;39;66;39;44;32;39;67;39;44;32;39;68;39;44;32;39;69;39;44;32;39;70;39;44;32;39;71;39;44;32;39;72;39;44;32;39;73;39;44;32;39;74;39;44;32;39;75;39;44;32;39;76;39;44;32;39;77;39;44;32;39;78;39;44;32;39;79;39;44;32;39;80;39;44;32;39;81;39;44;32;39;82;39;44;32;39;83;39;44;32;39;84;39;44;32;39;85;39;44;32;39;86;39;44;32;39;87;39;44;32;39;88;39;44;32;39;89;39;44;32;39;90;39;125; -`,pC=` +`,UA=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;112;97;108;97;118;114;97;32;34;81;117;101;32;112;97;108;97;118;114;97;32;40;115;243;32;109;97;105;250;115;99;117;108;97;115;41;63;34; @@ -68087,7 +70753,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;115;101;103;114;101;100;111; -`,fC=` +`,YA=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;115;101;103;114;101;100;111;32;34;81;117;97;108;32;233;32;111;32;116;101;120;116;111;32;99;105;102;114;97;100;111;63;34; @@ -68118,7 +70784,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;116;101;120;116;111; -`,bC=` +`,$A=` 105;110;112;117;116;58;32;105;110;116;32;110;117;109;101;114;111;32;34;73;110;116;114;111;100;117;122;32;117;109;32;110;250;109;101;114;111;32;105;110;105;99;105;97;108;34; @@ -68154,7 +70820,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;97;115;115;111;115;58;32;34;32;43;32;112;97;115;115;111;115; -`,xC=` +`,KA=` 105;110;112;117;116;58;32;105;110;116;32;113;117;97;110;116;105;100;97;100;101;32;34;81;117;97;110;116;97;115;32;110;111;116;97;115;63;34; @@ -68182,7 +70848,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;109;101;100;105;97; -`,vC=` +`,XA=` 105;110;112;117;116;58;32;105;110;116;32;113;117;97;110;116;105;100;97;100;101;32;34;81;117;97;110;116;111;115;32;110;250;109;101;114;111;115;63;34; @@ -68219,7 +70885,7 @@ lösung: vb-wald-loesung.visustruct -`,yC=` +`,eC=` 105;110;112;117;116;58;32;105;110;116;32;110;117;109;101;114;111;32;34;73;110;116;114;111;100;117;122;32;117;109;32;110;250;109;101;114;111;34; @@ -68238,7 +70904,7 @@ lösung: vb-wald-loesung.visustruct -`,wC=` +`,tC=` 99;111;110;115;116;32;100;111;117;98;108;101;32;73;86;65;32;61;32;48;46;50;51; @@ -68259,7 +70925,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;112;114;101;99;111;67;111;109;73;118;97; -`,zC=` +`,nC=` 105;110;116;32;112;105;110;32;61;32;48; @@ -68295,7 +70961,7 @@ lösung: vb-wald-loesung.visustruct -`,IC=` +`,iC=` 99;111;110;115;116;32;105;110;116;32;80;73;78;32;61;32;49;50;51;52; @@ -68331,7 +70997,7 @@ lösung: vb-wald-loesung.visustruct -`,kC=` +`,aC=` 105;110;112;117;116;58;32;105;110;116;32;110;117;109;101;114;111;49;32;34;80;114;105;109;101;105;114;111;32;110;250;109;101;114;111;34; @@ -68375,7 +71041,7 @@ lösung: vb-wald-loesung.visustruct -`,SC=` +`,sC=` 98;111;111;108;101;97;110;91;93;91;93;32;109;97;114;32;61;32;110;101;119;32;98;111;111;108;101;97;110;91;53;93;91;53;93; @@ -68429,7 +71095,7 @@ lösung: vb-wald-loesung.visustruct -`,TC=` +`,rC=` 98;111;111;108;101;97;110;91;93;91;93;32;109;97;114;32;61;32;110;101;119;32;98;111;111;108;101;97;110;91;53;93;91;53;93; @@ -68456,7 +71122,7 @@ lösung: vb-wald-loesung.visustruct 83;116;114;105;110;103;91;93;32;99;111;108;117;110;97;115;32;61;32;123;34;65;34;44;32;34;66;34;44;32;34;67;34;44;32;34;68;34;44;32;34;69;34;125; -`,_C=` +`,oC=` 105;110;112;117;116;58;32;105;110;116;32;112;114;97;116;111;32;34;81;117;101;32;112;114;97;116;111;63;32;40;49;44;32;50;32;111;117;32;51;41;34; @@ -68485,7 +71151,7 @@ lösung: vb-wald-loesung.visustruct -`,jC=` +`,lC=` 105;110;116;32;110;117;109;101;114;111;49;32;61;32;52; @@ -68500,7 +71166,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;115;111;109;97; -`,CC=` +`,uC=` 83;116;114;105;110;103;91;93;32;110;111;109;101;115;32;61;32;110;101;119;32;83;116;114;105;110;103;91;53;93; @@ -68522,7 +71188,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;76;105;109;112;97;32;111;32;113;117;97;100;114;111;58;32;34;32;43;32;110;111;109;101;115;91;115;111;114;116;101;97;100;111;32;45;32;49;93; -`,AC=` +`,mC=` 105;110;116;32;110;117;109;101;114;111;32;61;32;52; @@ -68534,7 +71200,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;78;250;109;101;114;111;32;100;117;112;108;105;99;97;100;111;58;32;34;32;43;32;110;117;109;101;114;111; -`,PC=` +`,cC=` -1; @@ -68581,7 +71247,7 @@ lösung: vb-wald-loesung.visustruct -`,DC=` +`,dC=` @@ -68618,7 +71284,7 @@ lösung: vb-wald-loesung.visustruct -`,BC=` +`,hC=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;108;101;105;116;111;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;118;111;99;97;98;117;108;97;114;105;111;46;99;115;118;34;41;41; @@ -68678,7 +71344,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;99;101;114;116;97;115;32;43;32;34;32;100;101;32;34;32;43;32;99;111;110;116;97;103;101;109;32;43;32;34;32;99;101;114;116;97;115;34; -`,OC=` +`,gC=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;108;101;105;116;111;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;118;111;99;97;98;117;108;97;114;105;111;46;99;115;118;34;41;41; @@ -68687,7 +71353,7 @@ lösung: vb-wald-loesung.visustruct 83;116;114;105;110;103;32;108;105;110;104;97;32;61;32;108;101;105;116;111;114;46;114;101;97;100;76;105;110;101;40;41; -`,MC=` +`,pC=` 105;110;112;117;116;58;32;105;110;116;32;105;100;97;100;101;32;34;81;117;97;110;116;111;115;32;97;110;111;115;32;116;101;110;115;63;34; @@ -68706,7 +71372,7 @@ lösung: vb-wald-loesung.visustruct -`,ZC=` +`,fC=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;108;101;105;116;111;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;100;105;97;114;105;111;46;116;120;116;34;41;41; @@ -68729,7 +71395,7 @@ lösung: vb-wald-loesung.visustruct 108;101;105;116;111;114;46;99;108;111;115;101;40;41; -`,LC=` +`,bC=` 83;116;114;105;110;103;32;108;105;110;104;97;32;61;32;34;90;111;114;97;59;49;59;50;59;50;34; @@ -68747,7 +71413,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;110;111;109;101;32;43;32;34;32;116;101;109;32;34;32;43;32;109;97;116;101;109;97;116;105;99;97;32;43;32;34;32;97;32;77;97;116;101;109;225;116;105;99;97;34; -`,WC=` +`,xC=` 83;116;114;105;110;103;32;108;105;110;104;97;32;61;32;34;123;92;34;110;111;109;101;92;34;58;32;92;34;90;111;114;97;92;34;44;32;92;34;101;115;112;101;99;105;101;92;34;58;32;92;34;99;97;98;114;97;92;34;44;32;92;34;105;100;97;100;101;92;34;58;32;54;125;44;34; @@ -68765,7 +71431,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;110;111;109;101; -`,EC=` +`,vC=` 83;99;97;110;110;101;114;32;102;105;99;104;101;105;114;111;32;61;32;110;101;119;32;83;99;97;110;110;101;114;40;110;101;119;32;70;105;108;101;40;34;99;111;109;112;114;97;115;46;116;120;116;34;41;41; @@ -68785,7 +71451,7 @@ lösung: vb-wald-loesung.visustruct 102;105;99;104;101;105;114;111;46;99;108;111;115;101;40;41; -`,NC=` +`,yC=` 105;110;116;91;93;91;93;32;116;97;98;101;108;97;32;61;32;110;101;119;32;105;110;116;91;49;48;93;91;49;48;93; @@ -68817,7 +71483,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;97;32;43;32;34;32;183;32;34;32;43;32;98;32;43;32;34;32;61;32;34;32;43;32;116;97;98;101;108;97;91;97;32;45;32;49;93;91;98;32;45;32;49;93; -`,FC=` +`,wC=` 98;111;111;108;101;97;110;91;93;91;93;32;108;117;103;97;114;101;115;32;61;32;110;101;119;32;98;111;111;108;101;97;110;91;51;93;91;53;93; @@ -68865,7 +71531,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;76;105;118;114;101;115;58;32;34;32;43;32;108;105;118;114;101;115; -`,RC=` +`,zC=` 98;111;111;108;101;97;110;91;93;91;93;32;108;117;103;97;114;101;115;32;61;32;110;101;119;32;98;111;111;108;101;97;110;91;51;93;91;53;93; @@ -68880,7 +71546,7 @@ lösung: vb-wald-loesung.visustruct 108;117;103;97;114;101;115;91;50;93;91;51;93;32;61;32;116;114;117;101; -`,JC=` +`,IC=` 98;111;111;108;101;97;110;91;93;91;93;32;108;117;103;97;114;101;115;32;61;32;110;101;119;32;98;111;111;108;101;97;110;91;51;93;91;53;93; @@ -68914,7 +71580,7 @@ lösung: vb-wald-loesung.visustruct -`,GC=` +`,kC=` 98;111;111;108;101;97;110;91;93;91;93;32;108;117;103;97;114;101;115;32;61;32;110;101;119;32;98;111;111;108;101;97;110;91;51;93;91;53;93; @@ -68932,7 +71598,7 @@ lösung: vb-wald-loesung.visustruct 105;110;112;117;116;58;32;105;110;116;32;108;117;103;97;114;32;34;76;117;103;97;114;34; -`,HC=` +`,SC=` 98;111;111;108;101;97;110;91;93;91;93;32;108;117;103;97;114;101;115;32;61;32;110;101;119;32;98;111;111;108;101;97;110;91;51;93;91;53;93; @@ -68980,7 +71646,7 @@ lösung: vb-wald-loesung.visustruct -`,VC=` +`,TC=` 98;111;111;108;101;97;110;91;93;91;93;32;108;117;103;97;114;101;115;32;61;32;110;101;119;32;98;111;111;108;101;97;110;91;51;93;91;53;93; @@ -69004,7 +71670,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;70;105;108;97;32;49;44;32;108;117;103;97;114;32;50;32;118;101;110;100;105;100;111;63;32;34;32;43;32;108;117;103;97;114;101;115;91;49;93;91;50;93; -`,qC=` +`,_C=` 105;110;116;32;110;117;109;101;114;111;32;61;32;52; @@ -69019,7 +71685,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;82;101;115;117;108;116;97;100;111;58;32;34;32;43;32;114;101;115;117;108;116;97;100;111; -`,QC=` +`,jC=` 105;110;116;32;110;117;109;101;114;111;32;61;32;52; @@ -69034,7 +71700,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;82;101;115;117;108;116;97;100;111;58;32;34;32;43;32;114;101;115;117;108;116;97;100;111; -`,UC=` +`,AC=` 105;110;116;32;115;101;103;117;110;100;111;115;32;61;32;50;48;48; @@ -69049,7 +71715,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;109;105;110;117;116;111;115;32;43;32;34;32;109;105;110;32;34;32;43;32;114;101;115;116;111;32;43;32;34;32;115;34; -`,YC=` +`,CC=` 105;110;116;32;115;101;103;117;110;100;111;115;32;61;32;50;48;48; @@ -69064,7 +71730,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;109;105;110;117;116;111;115;32;43;32;34;32;109;105;110;32;34;32;43;32;114;101;115;116;111;32;43;32;34;32;115;34; -`,$C=` +`,DC=` 83;116;114;105;110;103;32;110;111;109;101;32;61;32;34;76;117;100;119;105;103;34; @@ -69076,7 +71742,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;110;111;109;101;32;43;32;34;32;116;101;109;32;34;32;43;32;105;100;97;100;101;32;43;32;34;32;97;110;111;115;46;34; -`,KC=` +`,PC=` 83;116;114;105;110;103;32;110;111;109;101;32;61;32;34;76;117;100;119;105;103;34; @@ -69088,7 +71754,7 @@ lösung: vb-wald-loesung.visustruct 115;121;115;116;101;109;46;111;117;116;46;112;114;105;110;116;108;110;40;110;111;109;101;32;43;32;34;32;116;101;109;32;34;32;43;32;73;100;97;100;101;32;43;32;34;32;97;110;111;115;46;34;41; -`,XC=` +`,BC=` 83;116;114;105;110;103;32;110;111;109;101;32;61;32;34;76;117;100;119;105;103;34; @@ -69106,7 +71772,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;65;108;116;117;114;97;58;32;34;32;43;32;97;108;116;117;114;97;32;43;32;34;32;109;34; -`,eA=` +`,OC=` 105;110;116;32;110;117;109;101;114;111;32;61;32;51; @@ -69121,7 +71787,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;110;117;109;101;114;111; -`,tA=` +`,MC=` 105;110;116;32;110;117;109;101;114;111;32;61;32;50; @@ -69136,7 +71802,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;110;117;109;101;114;111; -`,nA=` +`,ZC=` 111;117;116;112;117;116;58;32;110;117;109;101;114;111; @@ -69151,7 +71817,7 @@ lösung: vb-wald-loesung.visustruct 110;117;109;101;114;111;32;61;32;110;117;109;101;114;111;32;43;32;51; -`,iA=` +`,LC=` 83;116;114;105;110;103;32;101;115;113;117;101;114;100;97;32;61;32;34;115;117;109;111;34; @@ -69175,7 +71841,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;68;105;114;101;105;116;97;58;32;34;32;43;32;100;105;114;101;105;116;97; -`,aA=` +`,WC=` 83;116;114;105;110;103;32;101;115;113;117;101;114;100;97;32;61;32;34;115;117;109;111;34; @@ -69190,7 +71856,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;68;105;114;101;105;116;97;58;32;34;32;43;32;100;105;114;101;105;116;97; -`,sA=` +`,EC=` 105;110;116;32;97;32;61;32;53; @@ -69214,7 +71880,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;98;32;61;32;34;32;43;32;98; -`,rA=` +`,NC=` 105;110;116;32;105;100;97;100;101;32;61;32;49;52; @@ -69232,7 +71898,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;65;108;116;117;114;97;58;32;34;32;43;32;97;108;116;117;114;97;32;43;32;34;32;109;34; -`,oA=` +`,FC=` 105;110;116;32;109;105;110;117;116;111;115;32;61;32;49;51;53; @@ -69247,7 +71913,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;104;111;114;97;115;32;43;32;34;32;104;111;114;97;115;32;101;32;34;32;43;32;114;101;115;116;111;32;43;32;34;32;109;105;110;117;116;111;115;34; -`,lA=` +`,RC=` 105;110;116;32;113;117;97;110;116;105;100;97;100;101;32;61;32;51; @@ -69262,7 +71928,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;84;111;116;97;108;58;32;34;32;43;32;112;114;101;99;111;84;111;116;97;108;32;43;32;34;32;101;117;114;111;115;34; -`,uA=` +`,JC=` 105;110;116;32;115;97;108;100;111;32;61;32;50;48; @@ -69277,7 +71943,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;82;101;115;116;97;58;32;34;32;43;32;115;97;108;100;111; -`,mA=` +`,GC=` 105;110;116;32;115;97;108;100;111;32;61;32;50;48; @@ -69292,7 +71958,7 @@ lösung: vb-wald-loesung.visustruct 115;97;108;100;111;32;61;32;115;97;108;100;111;32;45;32;112;114;101;99;111; -`,cA=` +`,HC=` 105;110;116;32;112;114;101;99;111;32;61;32;57; @@ -69307,7 +71973,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;84;111;116;97;108;58;32;34;32;43;32;116;111;116;97;108; -`,dA=` +`,VC=` 105;110;116;32;102;97;116;105;97;115;32;61;32;56; @@ -69322,7 +71988,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;67;97;100;97;32;117;109;32;114;101;99;101;98;101;32;34;32;43;32;112;111;114;80;101;115;115;111;97;32;43;32;34;32;102;97;116;105;97;115;46;34; -`,hA=` +`,qC=` 105;110;116;32;102;97;116;105;97;115;32;61;32;56; @@ -69337,7 +72003,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;67;97;100;97;32;117;109;32;114;101;99;101;98;101;32;34;32;43;32;112;111;114;112;101;115;115;111;97;32;43;32;34;32;102;97;116;105;97;115;46;34; -`,gA=` +`,QC=` 105;110;116;32;99;111;109;112;114;105;109;101;110;116;111;32;61;32;55; @@ -69358,7 +72024,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;101;114;237;109;101;116;114;111;58;32;34;32;43;32;112;101;114;105;109;101;116;114;111; -`,pA=` +`,UC=` 105;110;116;32;115;101;103;117;110;100;111;115;32;61;32;50;48;48; @@ -69373,7 +72039,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;109;105;110;117;116;111;115;32;43;32;34;32;109;105;110;117;116;111;115;32;101;32;34;32;43;32;114;101;115;116;111;32;43;32;34;32;115;101;103;117;110;100;111;115;34; -`,fA=` +`,YC=` 105;110;116;32;115;101;103;117;110;100;111;115;32;61;32;50;48;48; @@ -69382,7 +72048,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;109;105;110;117;116;111;115;32;43;32;34;32;109;105;110;117;116;111;115;32;101;32;34;32;43;32;114;101;115;116;111;32;43;32;34;32;115;101;103;117;110;100;111;115;34; -`,bA=` +`,$C=` 105;110;116;32;99;111;109;112;114;105;109;101;110;116;111;32;61;32;53; @@ -69397,7 +72063,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;97;114;101;97; -`,xA=` +`,KC=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;110;111;109;101;32;34;67;111;109;111;32;116;101;32;99;104;97;109;97;115;63;34; @@ -69406,7 +72072,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;79;108;225;32;34;32;43;32;110;111;109;101;32;43;32;34;33;34; -`,vA=` +`,XC=` 105;110;112;117;116;58;32;105;110;116;32;97;32;34;80;114;105;109;101;105;114;111;32;110;250;109;101;114;111;63;34; @@ -69421,7 +72087,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;111;109;97;58;32;34;32;43;32;115;111;109;97; -`,yA=` +`,eD=` 105;110;112;117;116;58;32;105;110;116;32;97;32;34;80;114;105;109;101;105;114;111;32;110;250;109;101;114;111;63;34; @@ -69433,7 +72099,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;111;109;97;58;32;34;32;43;32;40;97;32;43;32;98;41; -`,wA=` +`,tD=` 105;110;112;117;116;58;32;105;110;116;32;97;32;34;80;114;105;109;101;105;114;111;32;110;250;109;101;114;111;63;34; @@ -69445,7 +72111,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;111;109;97;58;32;34;32;43;32;97;32;43;32;98; -`,zA=` +`,nD=` 105;110;112;117;116;58;32;105;110;116;32;105;100;97;100;101;32;34;81;117;97;110;116;111;115;32;97;110;111;115;32;116;101;110;115;63;34; @@ -69454,7 +72120,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;78;111;32;112;114;243;120;105;109;111;32;97;110;111;32;116;101;110;115;32;34;32;43;32;40;105;100;97;100;101;32;43;32;49;41; -`,IA=` +`,iD=` 105;110;112;117;116;58;32;105;110;116;32;105;100;97;100;101;32;34;81;117;97;110;116;111;115;32;97;110;111;115;32;116;101;110;115;63;34; @@ -69463,7 +72129,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;78;111;32;112;114;243;120;105;109;111;32;97;110;111;32;116;101;110;115;32;34;32;43;32;40;73;100;97;100;101;32;43;32;49;41; -`,kA=` +`,aD=` 105;110;112;117;116;58;32;105;110;116;32;97;110;111;115;32;34;81;117;97;110;116;111;115;32;97;110;111;115;32;116;101;110;115;63;34; @@ -69475,7 +72141,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;227;111;32;99;101;114;99;97;32;100;101;32;34;32;43;32;100;105;97;115;32;43;32;34;32;100;105;97;115;46;34; -`,SA=` +`,sD=` 105;110;112;117;116;58;32;100;111;117;98;108;101;32;120;32;34;80;114;105;109;101;105;114;111;32;110;250;109;101;114;111;63;34; @@ -69490,7 +72156,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;77;233;100;105;97;58;32;34;32;43;32;109;101;100;105;97; -`,TA=` +`,rD=` 105;110;112;117;116;58;32;105;110;116;32;97;32;34;80;114;105;109;101;105;114;111;32;110;250;109;101;114;111;63;34; @@ -69511,7 +72177,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;114;111;100;117;116;111;58;32;34;32;43;32;112;114;111;100;117;116;111; -`,_A=` +`,oD=` 105;110;112;117;116;58;32;105;110;116;32;105;100;97;100;101;32;34;81;117;97;110;116;111;115;32;97;110;111;115;32;116;101;110;115;63;34; @@ -69530,7 +72196,7 @@ lösung: vb-wald-loesung.visustruct -`,jA=` +`,lD=` 105;110;112;117;116;58;32;105;110;116;32;110;117;109;101;114;111;32;34;78;250;109;101;114;111;63;34; @@ -69552,7 +72218,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;110;117;109;101;114;111; -`,CA=` +`,uD=` 105;110;112;117;116;58;32;105;110;116;32;110;117;109;101;114;111;32;34;78;250;109;101;114;111;63;34; @@ -69571,7 +72237,7 @@ lösung: vb-wald-loesung.visustruct -`,AA=` +`,mD=` 105;110;116;32;112;111;110;116;111;115;32;61;32;48; @@ -69589,7 +72255,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;111;110;116;111;115;58;32;34;32;43;32;112;111;110;116;111;115; -`,PA=` +`,cD=` 105;110;116;32;112;111;110;116;111;115;32;61;32;48; @@ -69607,7 +72273,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;111;110;116;111;115;58;32;34;32;43;32;112;111;110;116;111;115; -`,DA=` +`,dD=` 105;110;116;32;112;111;110;116;111;115;32;61;32;49;48; @@ -69622,7 +72288,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;111;110;116;111;115;58;32;34;32;43;32;112;111;110;116;111;115; -`,BA=` +`,hD=` 105;110;116;32;112;111;110;116;111;115;32;61;32;49;48; @@ -69637,7 +72303,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;111;110;116;111;115;58;32;34;32;43;32;112;111;110;116;111;115; -`,OA=` +`,gD=` 105;110;116;32;112;114;101;99;111;32;61;32;56; @@ -69655,7 +72321,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;84;111;116;97;108;58;32;34;32;43;32;116;111;116;97;108; -`,MA=` +`,pD=` 105;110;116;32;112;114;101;99;111;32;61;32;56; @@ -69673,7 +72339,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;84;111;116;97;108;58;32;34;32;43;32;116;111;116;97;108; -`,ZA=` +`,fD=` 105;110;112;117;116;58;32;105;110;116;32;97;32;34;80;114;105;109;101;105;114;111;32;110;250;109;101;114;111;63;34; @@ -69695,7 +72361,7 @@ lösung: vb-wald-loesung.visustruct -`,LA=` +`,bD=` 105;110;112;117;116;58;32;100;111;117;98;108;101;32;112;114;101;99;111;32;34;80;114;101;231;111;32;101;109;32;101;117;114;111;115;63;34; @@ -69717,7 +72383,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;65;32;112;97;103;97;114;58;32;34;32;43;32;112;114;101;99;111;32;43;32;34;32;101;117;114;111;115;34; -`,WA=` +`,xD=` 105;110;112;117;116;58;32;105;110;116;32;110;111;116;97;32;34;78;111;116;97;63;34; @@ -69736,7 +72402,7 @@ lösung: vb-wald-loesung.visustruct -`,EA=` +`,vD=` 105;110;112;117;116;58;32;105;110;116;32;112;111;110;116;111;115;32;34;81;117;97;110;116;111;115;32;112;111;110;116;111;115;63;34; @@ -69755,7 +72421,7 @@ lösung: vb-wald-loesung.visustruct -`,NA=` +`,yD=` 105;110;112;117;116;58;32;105;110;116;32;105;100;97;100;101;32;34;81;117;101;32;105;100;97;100;101;32;116;101;110;115;63;34; @@ -69774,7 +72440,7 @@ lösung: vb-wald-loesung.visustruct -`,FA=` +`,wD=` 105;110;112;117;116;58;32;105;110;116;32;105;100;97;100;101;32;34;81;117;101;32;105;100;97;100;101;32;116;101;110;115;63;34; @@ -69793,7 +72459,7 @@ lösung: vb-wald-loesung.visustruct -`,RA=` +`,zD=` 105;110;116;32;105;100;97;100;101;32;61;32;49;53; @@ -69812,7 +72478,7 @@ lösung: vb-wald-loesung.visustruct -`,JA=` +`,ID=` 105;110;116;32;105;100;97;100;101;32;61;32;49;53; @@ -69831,7 +72497,7 @@ lösung: vb-wald-loesung.visustruct -`,GA=` +`,kD=` 105;110;112;117;116;58;32;105;110;116;32;105;100;97;100;101;32;34;81;117;97;110;116;111;115;32;97;110;111;115;32;116;101;110;115;63;34; @@ -69850,7 +72516,7 @@ lösung: vb-wald-loesung.visustruct -`,HA=` +`,SD=` 105;110;112;117;116;58;32;105;110;116;32;110;111;116;97;32;34;78;111;116;97;63;34; @@ -69869,7 +72535,7 @@ lösung: vb-wald-loesung.visustruct -`,VA=` +`,TD=` 105;110;112;117;116;58;32;105;110;116;32;97;110;111;32;34;65;110;111;63;34; @@ -69888,7 +72554,7 @@ lösung: vb-wald-loesung.visustruct -`,qA=` +`,_D=` 105;110;112;117;116;58;32;105;110;116;32;100;105;97;32;34;68;105;97;32;40;49;32;97;32;55;41;63;34; @@ -69907,7 +72573,7 @@ lösung: vb-wald-loesung.visustruct -`,QA=` +`,jD=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;99;111;114;32;34;68;101;32;113;117;101;32;99;111;114;32;101;115;116;225;32;111;32;115;101;109;225;102;111;114;111;63;34; @@ -69936,7 +72602,7 @@ lösung: vb-wald-loesung.visustruct -`,UA=` +`,AD=` 105;110;112;117;116;58;32;105;110;116;32;101;115;99;111;108;104;97;32;34;49;32;225;103;117;97;44;32;50;32;115;117;109;111;44;32;51;32;99;104;111;99;111;108;97;116;101;32;113;117;101;110;116;101;34; @@ -69965,7 +72631,7 @@ lösung: vb-wald-loesung.visustruct -`,YA=` +`,CD=` 105;110;112;117;116;58;32;105;110;116;32;100;105;97;32;34;81;117;101;32;100;105;97;32;40;49;32;97;32;55;41;63;34; @@ -69984,7 +72650,7 @@ lösung: vb-wald-loesung.visustruct -`,$A=` +`,DD=` 105;110;112;117;116;58;32;105;110;116;32;100;105;97;32;34;81;117;101;32;100;105;97;32;40;49;32;97;32;55;41;63;34; @@ -70003,7 +72669,7 @@ lösung: vb-wald-loesung.visustruct -`,KA=` +`,PD=` 105;110;116;32;100;105;97;32;61;32;55; @@ -70022,7 +72688,7 @@ lösung: vb-wald-loesung.visustruct -`,XA=` +`,BD=` 105;110;116;32;100;105;97;32;61;32;55; @@ -70041,7 +72707,7 @@ lösung: vb-wald-loesung.visustruct -`,eP=` +`,OD=` 105;110;112;117;116;58;32;105;110;116;32;104;111;114;97;32;34;81;117;101;32;104;111;114;97;115;32;115;227;111;32;40;115;243;32;97;32;104;111;114;97;41;63;34; @@ -70060,7 +72726,7 @@ lösung: vb-wald-loesung.visustruct -`,tP=` +`,MD=` 105;110;112;117;116;58;32;105;110;116;32;110;111;116;97;32;34;81;117;101;32;110;111;116;97;63;34; @@ -70099,7 +72765,7 @@ lösung: vb-wald-loesung.visustruct -`,nP=` +`,ZD=` 105;110;112;117;116;58;32;105;110;116;32;97;32;34;80;114;105;109;101;105;114;111;32;110;250;109;101;114;111;34; @@ -70146,7 +72812,7 @@ lösung: vb-wald-loesung.visustruct -`,iP=` +`,LD=` 105;110;112;117;116;58;32;105;110;116;32;101;115;99;111;108;104;97;32;34;49;32;225;103;117;97;44;32;50;32;115;117;109;111;44;32;51;32;99;104;111;99;111;108;97;116;101;32;113;117;101;110;116;101;34; @@ -70185,7 +72851,7 @@ lösung: vb-wald-loesung.visustruct -`,aP=` +`,WD=` 80;244;114;32;117;109;97;32;99;104;225;118;101;110;97;32;110;97;32;109;101;115;97; @@ -70215,7 +72881,7 @@ lösung: vb-wald-loesung.visustruct 66;101;98;101;114;32;111;32;99;104;225; -`,sP=` +`,ED=` 76;101;118;97;110;116;97;114; @@ -70230,7 +72896,7 @@ lösung: vb-wald-loesung.visustruct 84;111;109;97;114;32;111;32;112;101;113;117;101;110;111;45;97;108;109;111;231;111; -`,rP=` +`,ND=` 69;110;99;104;101;114;32;97;32;99;104;97;108;101;105;114;97;32;99;111;109;32;225;103;117;97; @@ -70251,7 +72917,7 @@ lösung: vb-wald-loesung.visustruct 84;105;114;97;114;32;97;32;115;97;113;117;101;116;97;32;100;101;32;99;104;225; -`,oP=` +`,FD=` 69;115;116;225;32;97;32;99;104;111;118;101;114;63; @@ -70270,7 +72936,7 @@ lösung: vb-wald-loesung.visustruct 83;97;105;114; -`,lP=` +`,RD=` 80;114;97;116;111;32;110;227;111;32;118;97;122;105;111; @@ -70284,7 +72950,7 @@ lösung: vb-wald-loesung.visustruct 76;101;118;97;110;116;97;114;32;111;32;112;114;97;116;111; -`,uP=` +`,JD=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;67;111;110;116;97;114;32;97;116;233;63;34; @@ -70304,7 +72970,7 @@ lösung: vb-wald-loesung.visustruct -`,mP=` +`,GD=` 105;110;116;32;110;117;109;101;114;111;32;61;32;51; @@ -70324,7 +72990,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;97;114;116;105;100;97;33;34; -`,cP=` +`,HD=` 105;110;116;32;110;117;109;101;114;111;32;61;32;51; @@ -70341,7 +73007,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;97;114;116;105;100;97;33;34; -`,dP=` +`,VD=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;70;97;116;111;114;105;97;108;32;100;101;32;113;117;101;32;110;250;109;101;114;111;63;34; @@ -70367,7 +73033,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;110;32;43;32;34;33;32;61;32;34;32;43;32;102;97;116;111;114;105;97;108; -`,hP=` +`,qD=` 105;110;112;117;116;58;32;105;110;116;32;97;32;34;80;114;105;109;101;105;114;111;32;110;250;109;101;114;111;63;34; @@ -70402,7 +73068,7 @@ lösung: vb-wald-loesung.visustruct -`,gP=` +`,QD=` 105;110;112;117;116;58;32;105;110;116;32;97;32;34;80;114;105;109;101;105;114;111;32;110;250;109;101;114;111;63;34; @@ -70437,7 +73103,7 @@ lösung: vb-wald-loesung.visustruct -`,pP=` +`,UD=` 105;110;116;32;110;111;116;97;32;61;32;50; @@ -70461,7 +73127,7 @@ lösung: vb-wald-loesung.visustruct -`,fP=` +`,YD=` 105;110;116;32;110;111;116;97;32;61;32;50; @@ -70485,7 +73151,7 @@ lösung: vb-wald-loesung.visustruct -`,bP=` +`,$D=` 105;110;112;117;116;58;32;105;110;116;32;110;117;109;101;114;111;32;34;81;117;101;32;110;250;109;101;114;111;63;34; @@ -70514,7 +73180,7 @@ lösung: vb-wald-loesung.visustruct -`,xP=` +`,KD=` 105;110;112;117;116;58;32;105;110;116;32;110;117;109;101;114;111;32;34;78;250;109;101;114;111;32;105;110;105;99;105;97;108;34; @@ -70537,7 +73203,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;112;97;115;115;111;115; -`,vP=` +`,XD=` 105;110;116;32;110;117;109;101;114;111;32;61;32;48; @@ -70554,7 +73220,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;79;98;114;105;103;97;100;111;33;34; -`,yP=` +`,eP=` 105;110;116;32;105;32;61;32;49;48; @@ -70571,7 +73237,7 @@ lösung: vb-wald-loesung.visustruct -`,wP=` +`,tP=` 105;110;112;117;116;58;32;105;110;116;32;111;98;106;101;116;105;118;111;32;34;79;98;106;101;116;105;118;111;63;34; @@ -70597,7 +73263,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;101;109;97;110;97;115;58;32;34;32;43;32;115;101;109;97;110;97;115; -`,zP=` +`,nP=` 105;110;112;117;116;58;32;105;110;116;32;111;98;106;101;116;105;118;111;32;34;79;98;106;101;116;105;118;111;63;34; @@ -70623,7 +73289,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;101;109;97;110;97;115;58;32;34;32;43;32;115;101;109;97;110;97;115; -`,IP=` +`,iP=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;65;116;233;32;111;110;100;101;63;34; @@ -70643,7 +73309,7 @@ lösung: vb-wald-loesung.visustruct -`,kP=` +`,aP=` 105;110;116;32;110;117;109;101;114;111;32;61;32;51; @@ -70663,7 +73329,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;97;114;116;105;100;97;33;34; -`,SP=` +`,sP=` 105;110;116;32;110;117;109;101;114;111;32;61;32;51; @@ -70683,7 +73349,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;97;114;116;105;100;97;33;34; -`,TP=` +`,rP=` 105;110;116;32;110;111;116;97;32;61;32;48; @@ -70700,7 +73366,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;65;32;116;117;97;32;110;111;116;97;58;32;34;32;43;32;110;111;116;97; -`,_P=` +`,oP=` 105;110;116;32;115;111;109;97;32;61;32;48; @@ -70723,7 +73389,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;115;111;109;97; -`,jP=` +`,lP=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;78;250;109;101;114;111;32;105;110;105;99;105;97;108;34; @@ -70742,7 +73408,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;74;225;33;34; -`,CP=` +`,uP=` 105;110;112;117;116;58;32;105;110;116;32;110;117;109;101;114;111;32;34;81;117;101;32;116;97;98;117;97;100;97;63;34; @@ -70761,7 +73427,7 @@ lösung: vb-wald-loesung.visustruct -`,AP=` +`,mP=` 105;110;116;32;105;32;61;32;49; @@ -70774,7 +73440,7 @@ lösung: vb-wald-loesung.visustruct -`,PP=` +`,cP=` 105;110;112;117;116;58;32;105;110;116;32;110;117;109;101;114;111;32;34;78;250;109;101;114;111;32;105;110;105;99;105;97;108;63;34; @@ -70791,7 +73457,7 @@ lösung: vb-wald-loesung.visustruct -`,DP=` +`,dP=` 105;110;112;117;116;58;32;105;110;116;32;110;117;109;101;114;111;32;34;78;250;109;101;114;111;32;105;110;105;99;105;97;108;63;34; @@ -70808,7 +73474,7 @@ lösung: vb-wald-loesung.visustruct -`,BP=` +`,hP=` 105;110;116;32;110;117;109;101;114;111;32;61;32;49; @@ -70828,7 +73494,7 @@ lösung: vb-wald-loesung.visustruct -`,OP=` +`,gP=` 105;110;116;32;110;117;109;101;114;111;32;61;32;49; @@ -70848,7 +73514,7 @@ lösung: vb-wald-loesung.visustruct -`,MP=` +`,pP=` 105;110;112;117;116;58;32;105;110;116;32;110;117;109;101;114;111;32;34;78;250;109;101;114;111;32;105;110;105;99;105;97;108;63;34; @@ -70865,7 +73531,7 @@ lösung: vb-wald-loesung.visustruct -`,ZP=` +`,fP=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;65;116;233;32;113;117;101;32;110;250;109;101;114;111;63;34; @@ -70887,7 +73553,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;115;111;109;97; -`,LP=` +`,bP=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;81;117;97;110;116;97;115;32;108;105;110;104;97;115;63;34; @@ -70916,7 +73582,7 @@ lösung: vb-wald-loesung.visustruct -`,WP=` +`,xP=` 105;110;116;32;113;117;97;110;116;105;100;97;100;101;32;61;32;48; @@ -70948,7 +73614,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;113;117;97;110;116;105;100;97;100;101; -`,EP=` +`,vP=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;65;116;233;32;113;117;101;32;110;250;109;101;114;111;63;34; @@ -70980,7 +73646,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;113;117;97;110;116;105;100;97;100;101; -`,NP=` +`,yP=` 105;110;112;117;116;58;32;105;110;116;32;116;97;98;117;97;100;97;32;34;81;117;101;32;116;97;98;117;97;100;97;63;34; @@ -70996,7 +73662,7 @@ lösung: vb-wald-loesung.visustruct -`,FP=` +`,wP=` 105;110;112;117;116;58;32;105;110;116;32;116;97;98;117;97;100;97;32;34;81;117;101;32;116;97;98;117;97;100;97;63;34; @@ -71012,7 +73678,7 @@ lösung: vb-wald-loesung.visustruct -`,RP=` +`,zP=` 105;110;116;32;97;108;116;117;114;97;32;61;32;48; @@ -71031,7 +73697,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;65;108;116;117;114;97;58;32;34;32;43;32;97;108;116;117;114;97;32;43;32;34;32;99;109;34; -`,JP=` +`,IP=` 105;110;116;32;100;101;103;114;97;117;32;61;32;49; @@ -71047,7 +73713,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;65;108;116;117;114;97;58;32;34;32;43;32;97;108;116;117;114;97;32;43;32;34;32;99;109;34; -`,GP=` +`,kP=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;65;116;233;32;113;117;101;32;110;250;109;101;114;111;63;34; @@ -71063,7 +73729,7 @@ lösung: vb-wald-loesung.visustruct -`,HP=` +`,SP=` 105;110;112;117;116;58;32;105;110;116;32;108;97;114;103;117;114;97;32;34;76;97;114;103;117;114;97;34; @@ -71095,7 +73761,7 @@ lösung: vb-wald-loesung.visustruct -`,VP=` +`,TP=` 105;110;116;91;93;32;110;117;109;101;114;111;115;32;61;32;123;50;44;32;52;44;32;54;44;32;56;44;32;49;48;125; @@ -71111,7 +73777,7 @@ lösung: vb-wald-loesung.visustruct -`,qP=` +`,_P=` 105;110;116;91;93;32;118;97;108;111;114;101;115;32;61;32;123;52;44;32;56;44;32;49;53;44;32;49;54;44;32;50;51;44;32;52;50;125; @@ -71126,7 +73792,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;118;97;108;111;114;101;115;46;108;101;110;103;116;104; -`,QP=` +`,jP=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;65;116;233;32;113;117;101;32;110;250;109;101;114;111;63;34; @@ -71158,7 +73824,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;81;117;97;110;116;105;100;97;100;101;58;32;34;32;43;32;113;117;97;110;116;105;100;97;100;101; -`,UP=` +`,AP=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;65;116;233;32;113;117;101;32;110;250;109;101;114;111;63;34; @@ -71190,7 +73856,7 @@ lösung: vb-wald-loesung.visustruct -`,YP=` +`,CP=` 105;110;116;32;105;32;61;32;49; @@ -71213,7 +73879,7 @@ lösung: vb-wald-loesung.visustruct -`,$P=` +`,DP=` 105;110;116;32;105;32;61;32;49; @@ -71236,7 +73902,7 @@ lösung: vb-wald-loesung.visustruct -`,KP=` +`,PP=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;81;117;97;110;116;111;115;32;100;101;103;114;97;117;115;63;34; @@ -71265,7 +73931,7 @@ lösung: vb-wald-loesung.visustruct -`,XP=` +`,BP=` 83;116;114;105;110;103;91;93;32;110;111;109;101;115;32;61;32;110;101;119;32;83;116;114;105;110;103;91;51;93; @@ -71284,7 +73950,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;114;105;109;101;105;114;111;32;110;111;109;101;58;32;34;32;43;32;110;111;109;101;115;91;48;93; -`,eD=` +`,OP=` 105;110;116;91;93;32;110;117;109;101;114;111;115;32;61;32;110;101;119;32;105;110;116;91;52;93; @@ -71310,7 +73976,7 @@ lösung: vb-wald-loesung.visustruct -`,tD=` +`,MP=` 105;110;116;91;93;32;110;117;109;101;114;111;115;32;61;32;110;101;119;32;105;110;116;91;53;93; @@ -71361,7 +74027,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;77;225;120;105;109;111;58;32;34;32;43;32;109;97;120; -`,nD=` +`,ZP=` 105;110;116;91;93;32;112;111;110;116;111;115;32;61;32;123;49;50;44;32;55;44;32;49;57;44;32;52;125; @@ -71402,7 +74068,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;77;225;120;105;109;111;58;32;34;32;43;32;109;97;120; -`,iD=` +`,LP=` 105;110;116;32;115;111;109;97;32;61;32;48; @@ -71425,7 +74091,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;111;109;97;58;32;34;32;43;32;115;111;109;97; -`,aD=` +`,WP=` 105;110;116;32;115;111;109;97;32;61;32;48; @@ -71455,7 +74121,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;111;109;97;58;32;34;32;43;32;115;111;109;97; -`,sD=` +`,EP=` 105;110;112;117;116;58;32;105;110;116;32;99;111;109;112;114;105;109;101;110;116;111;32;34;67;111;109;112;114;105;109;101;110;116;111;63;34; @@ -71470,7 +74136,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;193;114;101;97;58;32;34;32;43;32;102; -`,rD=` +`,NP=` 109;111;115;116;114;97;114;66;111;97;115;86;105;110;100;97;115;40;41; @@ -71482,7 +74148,7 @@ lösung: vb-wald-loesung.visustruct 109;111;115;116;114;97;114;82;101;115;117;108;116;97;100;111;40;41; -`,oD=` +`,FP=` 105;110;116;91;93;32;116;101;109;112;101;114;97;116;117;114;97;115;32;61;32;123;45;53;44;32;45;50;44;32;45;56;44;32;45;51;125; @@ -71514,7 +74180,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;84;101;109;112;101;114;97;116;117;114;97;32;109;97;105;115;32;97;108;116;97;58;32;34;32;43;32;109;97;120; -`,lD=` +`,RP=` 105;110;116;91;93;32;116;101;109;112;101;114;97;116;117;114;97;115;32;61;32;123;45;53;44;32;45;50;44;32;45;56;44;32;45;51;125; @@ -71546,7 +74212,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;84;101;109;112;101;114;97;116;117;114;97;32;109;97;105;115;32;97;108;116;97;58;32;34;32;43;32;109;97;120; -`,uD=` +`,JP=` 105;110;116;91;93;32;112;111;110;116;111;115;32;61;32;123;52;44;32;55;44;32;50;44;32;53;125; @@ -71568,7 +74234,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;111;109;97;58;32;34;32;43;32;115;111;109;97; -`,mD=` +`,GP=` 105;110;116;91;93;32;112;111;110;116;111;115;32;61;32;123;52;44;32;55;44;32;50;44;32;53;125; @@ -71590,7 +74256,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;111;109;97;58;32;34;32;43;32;115;111;109;97; -`,cD=` +`,HP=` 105;110;116;91;93;32;110;111;116;97;115;32;61;32;123;50;44;32;51;44;32;49;44;32;52;125; @@ -71612,7 +74278,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;111;109;97;58;32;34;32;43;32;115;111;109;97; -`,dD=` +`,VP=` 105;110;112;117;116;58;32;105;110;116;32;110;117;109;101;114;111;32;34;81;117;101;32;110;250;109;101;114;111;63;34; @@ -71624,7 +74290,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;79;32;113;117;97;100;114;97;100;111;32;233;32;34;32;43;32;113; -`,hD=` +`,qP=` 105;110;116;32;114;101;115;117;108;116;97;100;111;32;61;32;120;32;42;32;120; @@ -71633,7 +74299,7 @@ lösung: vb-wald-loesung.visustruct 114;101;116;117;114;110;32;114;101;115;117;108;116;97;100;111; -`,gD=` +`,QP=` 109;111;115;116;114;97;114;84;105;116;117;108;111;40;41; @@ -71645,7 +74311,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;79;108;225;32;34;32;43;32;110;111;109;101; -`,pD=` +`,UP=` 111;117;116;112;117;116;58;32;34;66;101;109;45;118;105;110;100;111;32;97;111;32;113;117;105;122;33;34; @@ -71654,7 +74320,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;86;97;105;115;32;116;101;114;32;116;114;234;115;32;112;101;114;103;117;110;116;97;115;46;34; -`,fD=` +`,YP=` 109;111;115;116;114;97;114;83;111;109;97;40;51;44;32;52;41; @@ -71666,7 +74332,7 @@ lösung: vb-wald-loesung.visustruct 109;111;115;116;114;97;114;83;111;109;97;40;120;44;32;120;32;43;32;49;41; -`,bD=` +`,$P=` 105;110;116;32;115;111;109;97;32;61;32;97;32;43;32;98; @@ -71675,7 +74341,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;97;32;43;32;34;32;43;32;34;32;43;32;98;32;43;32;34;32;61;32;34;32;43;32;115;111;109;97; -`,xD=` +`,KP=` 105;110;112;117;116;58;32;105;110;116;32;105;110;105;99;105;111;32;34;86;97;108;111;114;32;105;110;105;99;105;97;108;34; @@ -71698,7 +74364,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;74;225;33;34; -`,vD=` +`,XP=` 105;110;112;117;116;58;32;105;110;116;32;105;110;105;99;105;111;32;34;86;97;108;111;114;32;105;110;105;99;105;97;108;34; @@ -71721,7 +74387,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;74;225;34; -`,yD=` +`,eB=` 105;110;116;91;93;91;93;32;112;111;110;116;111;115;32;61;32;123;123;51;44;32;53;44;32;50;125;44;32;123;52;44;32;49;44;32;54;125;125; @@ -71743,7 +74409,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;74;111;103;97;100;111;114;32;50;58;32;34;32;43;32;115;111;109;97; -`,wD=` +`,tB=` 105;110;116;91;93;91;93;32;112;111;110;116;111;115;32;61;32;123;123;51;44;32;53;44;32;50;125;44;32;123;52;44;32;49;44;32;54;125;125; @@ -71765,7 +74431,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;74;111;103;97;100;111;114;32;50;58;32;34;32;43;32;115;111;109;97; -`,zD=` +`,nB=` 105;110;116;91;93;91;93;32;112;111;110;116;111;115;32;61;32;123;123;51;44;32;53;125;44;32;123;52;44;32;50;125;125; @@ -71774,7 +74440,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;74;111;103;97;100;111;114;32;50;44;32;114;111;110;100;97;32;49;58;32;34;32;43;32;112;111;110;116;111;115;91;49;93;91;48;93; -`,ID=` +`,iB=` 105;110;116;91;93;91;93;32;112;111;110;116;111;115;32;61;32;123;123;51;44;32;53;125;44;32;123;52;44;32;50;125;125; @@ -71783,7 +74449,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;74;111;103;97;100;111;114;32;50;44;32;114;111;110;100;97;32;49;58;32;34;32;43;32;80;111;110;116;111;115;91;49;93;91;48;93; -`,kD=` +`,aB=` 105;110;116;91;93;91;93;32;112;111;110;116;111;115;32;61;32;123;123;51;44;32;53;125;44;32;123;52;44;32;49;125;44;32;123;50;44;32;50;125;125; @@ -71812,7 +74478,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;83;111;109;97;58;32;34;32;43;32;115;111;109;97; -`,SD=` +`,sB=` 105;110;116;32;115;111;109;97;32;61;32;48; @@ -71835,7 +74501,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;115;111;109;97; -`,TD=` +`,rB=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;65;116;233;32;113;117;101;32;110;250;109;101;114;111;63;34; @@ -71857,7 +74523,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;115;111;109;97; -`,_D=` +`,oB=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;65;116;233;32;113;117;101;32;110;250;109;101;114;111;63;34; @@ -71879,7 +74545,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;115;111;109;97; -`,jD=` +`,lB=` 105;110;112;117;116;58;32;105;110;116;32;110;117;109;101;114;111;32;34;81;117;101;32;116;97;98;117;97;100;97;63;34; @@ -71911,7 +74577,7 @@ lösung: vb-wald-loesung.visustruct -`,CD=` +`,uB=` 105;110;112;117;116;58;32;105;110;116;32;110;32;34;73;110;116;114;111;100;117;122;32;117;109;32;110;250;109;101;114;111;34; @@ -71933,7 +74599,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;102;97;116;111;114;105;97;108; -`,AD=` +`,mB=` 83;116;114;105;110;103;32;99;97;114;116;97;32;61;32;70;105;108;101;115;46;114;101;97;100;83;116;114;105;110;103;40;80;97;116;104;46;111;102;40;34;99;97;114;116;97;46;116;120;116;34;41;41; @@ -71965,13 +74631,13 @@ lösung: vb-wald-loesung.visustruct -`,PD=` +`,cB=` 83;116;114;105;110;103;32;99;97;114;116;97;32;61;32;70;105;108;101;115;46;114;101;97;100;83;116;114;105;110;103;40;80;97;116;104;46;111;102;40;34;99;97;114;116;97;46;116;120;116;34;41;41; -`,DD=` +`,dB=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;110;111;109;101;32;34;78;111;109;101;32;112;114;243;112;114;105;111;63;34; @@ -71983,7 +74649,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;110;111;109;101;46;99;104;97;114;65;116;40;48;41;32;43;32;34;46;32;34;32;43;32;97;112;101;108;105;100;111;46;99;104;97;114;65;116;40;48;41;32;43;32;34;46;34; -`,BD=` +`,hB=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;110;111;109;101;32;34;78;111;109;101;32;112;114;243;112;114;105;111;63;34; @@ -71995,7 +74661,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;110;111;109;101;46;99;104;97;114;65;116;40;49;41;32;43;32;34;46;32;34;32;43;32;97;112;101;108;105;100;111;46;99;104;97;114;65;116;40;49;41;32;43;32;34;46;34; -`,OD=` +`,gB=` 83;116;114;105;110;103;32;110;111;109;101;32;61;32;34;76;117;100;119;105;103;34; @@ -72004,7 +74670,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;110;111;109;101;46;99;104;97;114;65;116;40;48;41;32;43;32;34;32;116;101;109;32;34;32;43;32;110;111;109;101;46;108;101;110;103;116;104;40;41;32;43;32;34;32;108;101;116;114;97;115;34; -`,MD=` +`,pB=` 83;116;114;105;110;103;32;110;111;109;101;32;61;32;34;76;117;100;119;105;103;34; @@ -72013,7 +74679,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;110;111;109;101;46;99;104;97;114;97;116;40;48;41;32;43;32;34;32;116;101;109;32;34;32;43;32;110;111;109;101;46;76;101;110;103;116;104;40;41;32;43;32;34;32;108;101;116;114;97;115;34; -`,ZD=` +`,fB=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;101;110;116;114;97;100;97;32;34;80;97;108;97;118;114;97;45;112;97;115;115;101;63;34; @@ -72032,7 +74698,7 @@ lösung: vb-wald-loesung.visustruct -`,LD=` +`,bB=` 105;110;112;117;116;58;32;105;110;116;32;105;100;97;100;101;32;34;81;117;97;110;116;111;115;32;97;110;111;115;32;116;101;110;115;63;34; @@ -72061,7 +74727,7 @@ lösung: vb-wald-loesung.visustruct -`,WD=` +`,xB=` 105;110;112;117;116;58;32;105;110;116;32;110;117;109;101;114;111;32;34;86;97;108;111;114;32;105;110;105;99;105;97;108;63;34; @@ -72081,7 +74747,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;70;105;109;34; -`,ED=` +`,vB=` 105;110;116;32;116;101;110;116;97;116;105;118;97;115;32;61;32;48; @@ -72114,7 +74780,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;84;101;110;116;97;116;105;118;97;115;58;32;34;32;43;32;116;101;110;116;97;116;105;118;97;115; -`,ND=` +`,yB=` 105;110;116;32;116;101;110;116;97;116;105;118;97;115;32;61;32;48; @@ -72147,7 +74813,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;84;101;110;116;97;116;105;118;97;115;58;32;34;32;43;32;116;101;110;116;97;116;105;118;97;115; -`,FD=` +`,wB=` 105;110;116;32;115;111;109;97;32;61;32;48; @@ -72189,7 +74855,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;84;111;116;97;108;58;32;34;32;43;32;115;111;109;97; -`,RD=` +`,zB=` 105;110;112;117;116;58;32;105;110;116;32;105;100;97;100;101;32;34;81;117;97;110;116;111;115;32;97;110;111;115;32;116;101;110;115;63;34; @@ -72211,7 +74877,7 @@ lösung: vb-wald-loesung.visustruct -`,JD=` +`,IB=` 105;110;112;117;116;58;32;105;110;116;32;108;105;109;105;116;101;32;34;65;116;233;32;113;117;101;32;110;250;109;101;114;111;63;34; @@ -72227,7 +74893,7 @@ lösung: vb-wald-loesung.visustruct -`,GD=` +`,kB=` 105;110;116;91;93;32;99;97;114;116;97;115;32;61;32;123;56;44;32;52;44;32;49;49;44;32;52;44;32;54;125; @@ -72266,7 +74932,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;111;115;105;231;227;111;58;32;34;32;43;32;112;111;115;105;99;97;111; -`,HD=` +`,SB=` 105;110;116;91;93;32;99;97;114;116;97;115;32;61;32;123;56;44;32;52;44;32;49;49;44;32;52;44;32;54;125; @@ -72305,7 +74971,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;111;115;105;231;227;111;58;32;34;32;43;32;112;111;115;105;99;97;111; -`,VD=` +`,TB=` 105;110;116;91;93;32;99;97;114;116;97;115;32;61;32;123;56;44;32;52;44;32;49;49;44;32;52;44;32;54;125; @@ -72340,7 +75006,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;111;115;105;231;227;111;58;32;34;32;43;32;112;111;115;105;99;97;111; -`,qD=` +`,_B=` 105;110;116;91;93;32;99;97;114;116;97;115;32;61;32;123;56;44;32;52;44;32;49;49;44;32;52;44;32;54;125; @@ -72375,7 +75041,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;111;115;105;231;227;111;58;32;34;32;43;32;112;111;115;105;99;97;111; -`,QD=` +`,jB=` 105;110;116;91;93;32;99;97;114;116;97;115;32;61;32;123;56;44;32;52;44;32;49;49;44;32;52;44;32;54;125; @@ -72410,7 +75076,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;81;117;97;110;116;105;100;97;100;101;58;32;34;32;43;32;113;117;97;110;116;105;100;97;100;101; -`,UD=` +`,AB=` 111;117;116;112;117;116;58;32;34;66;111;109;32;100;105;97;34; @@ -72419,13 +75085,13 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;72;111;106;101;32;97;112;114;101;110;100;101;109;111;115;32;101;115;116;114;117;116;111;103;114;97;109;97;115;46;34; -`,YD=` +`,CB=` 111;117;116;112;117;116;58;32;34;79;108;225;32;77;117;110;100;111;34; -`,$D=` +`,DB=` 111;117;116;112;117;116;58;32;34;79;108;225;34; @@ -72434,7 +75100,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;69;115;116;111;117;32;97;32;97;112;114;101;110;100;101;114;32;101;115;116;114;117;116;111;103;114;97;109;97;115;34; -`,KD=` +`,PB=` 83;99;97;110;110;101;114;32;102;105;99;104;101;105;114;111;32;61;32;110;101;119;32;83;99;97;110;110;101;114;40;110;101;119;32;70;105;108;101;40;34;99;111;109;112;114;97;115;46;116;120;116;34;41;41; @@ -72475,7 +75141,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;113;117;97;110;116;105;100;97;100;101;32;43;32;34;32;108;105;110;104;97;115;32;103;117;97;114;100;97;100;97;115;34; -`,XD=` +`,BB=` 83;99;97;110;110;101;114;32;102;105;99;104;101;105;114;111;32;61;32;110;101;119;32;83;99;97;110;110;101;114;40;110;101;119;32;70;105;108;101;40;34;99;111;109;112;114;97;115;46;116;120;116;34;41;41; @@ -72484,7 +75150,7 @@ lösung: vb-wald-loesung.visustruct 80;114;105;110;116;87;114;105;116;101;114;32;115;97;105;100;97;32;61;32;110;101;119;32;80;114;105;110;116;87;114;105;116;101;114;40;34;99;111;109;112;114;97;115;45;110;111;118;97;46;116;120;116;34;41; -`,eB=` +`,OB=` 83;99;97;110;110;101;114;32;102;105;99;104;101;105;114;111;32;61;32;110;101;119;32;83;99;97;110;110;101;114;40;110;101;119;32;70;105;108;101;40;34;99;111;109;112;114;97;115;46;116;120;116;34;41;41; @@ -72510,13 +75176,13 @@ lösung: vb-wald-loesung.visustruct 102;105;99;104;101;105;114;111;46;99;108;111;115;101;40;41; -`,tB=` +`,MB=` 83;99;97;110;110;101;114;32;102;105;99;104;101;105;114;111;32;61;32;110;101;119;32;83;99;97;110;110;101;114;40;110;101;119;32;70;105;108;101;40;34;99;111;109;112;114;97;115;46;116;120;116;34;41;41; -`,nB=` +`,ZB=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;108;101;105;116;111;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;100;105;97;114;105;111;46;116;120;116;34;41;41; @@ -72555,7 +75221,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;82;97;112;111;115;97;58;32;34;32;43;32;113;117;97;110;116;105;100;97;100;101; -`,iB=` +`,LB=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;108;101;105;116;111;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;100;105;97;114;105;111;46;116;120;116;34;41;41; @@ -72564,7 +75230,7 @@ lösung: vb-wald-loesung.visustruct 83;116;114;105;110;103;32;108;105;110;104;97;32;61;32;108;101;105;116;111;114;46;114;101;97;100;76;105;110;101;40;41; -`,aB=` +`,WB=` 83;116;114;105;110;103;32;116;101;120;116;111;32;61;32;70;105;108;101;115;46;114;101;97;100;83;116;114;105;110;103;40;80;97;116;104;46;111;102;40;34;100;105;97;114;105;111;46;116;120;116;34;41;41; @@ -72599,7 +75265,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;69;110;116;114;97;100;97;32;109;97;105;115;32;108;111;110;103;97;58;32;34;32;43;32;109;97;105;115;76;111;110;103;97; -`,sB=` +`,EB=` 83;116;114;105;110;103;32;116;101;120;116;111;32;61;32;70;105;108;101;115;46;114;101;97;100;83;116;114;105;110;103;40;80;97;116;104;46;111;102;40;34;100;105;97;114;105;111;46;116;120;116;34;41;41; @@ -72608,7 +75274,7 @@ lösung: vb-wald-loesung.visustruct 83;116;114;105;110;103;91;93;32;108;105;110;104;97;115;32;61;32;116;101;120;116;111;46;115;112;108;105;116;40;34;92;110;34;41; -`,rB=` +`,NB=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;108;101;105;116;111;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;116;117;114;109;97;46;99;115;118;34;41;41; @@ -72662,7 +75328,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;77;101;108;104;111;114;32;110;111;116;97;32;97;32;73;110;103;108;234;115;58;32;34;32;43;32;109;101;108;104;111;114;78;111;109;101;32;43;32;34;32;40;34;32;43;32;109;101;108;104;111;114;78;111;116;97;32;43;32;34;41;34; -`,oB=` +`,FB=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;108;101;105;116;111;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;116;117;114;109;97;46;99;115;118;34;41;41; @@ -72671,7 +75337,7 @@ lösung: vb-wald-loesung.visustruct 83;116;114;105;110;103;32;108;105;110;104;97;32;61;32;108;101;105;116;111;114;46;114;101;97;100;76;105;110;101;40;41; -`,lB=` +`,RB=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;108;101;105;116;111;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;116;117;114;109;97;46;99;115;118;34;41;41; @@ -72712,7 +75378,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;77;233;100;105;97;32;100;101;32;77;97;116;101;109;225;116;105;99;97;58;32;34;32;43;32;115;111;109;97;32;47;32;113;117;97;110;116;105;100;97;100;101; -`,uB=` +`,JB=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;108;101;105;116;111;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;116;117;114;109;97;46;99;115;118;34;41;41; @@ -72721,7 +75387,7 @@ lösung: vb-wald-loesung.visustruct 83;116;114;105;110;103;32;108;105;110;104;97;32;61;32;108;101;105;116;111;114;46;114;101;97;100;76;105;110;101;40;41; -`,mB=` +`,GB=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;108;101;105;116;111;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;122;111;111;46;106;115;111;110;34;41;41; @@ -72760,7 +75426,7 @@ lösung: vb-wald-loesung.visustruct 108;101;105;116;111;114;46;99;108;111;115;101;40;41; -`,cB=` +`,HB=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;108;101;105;116;111;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;122;111;111;46;106;115;111;110;34;41;41; @@ -72769,7 +75435,7 @@ lösung: vb-wald-loesung.visustruct 83;116;114;105;110;103;32;108;105;110;104;97;32;61;32;108;101;105;116;111;114;46;114;101;97;100;76;105;110;101;40;41; -`,dB=` +`,VB=` 83;116;114;105;110;103;91;93;32;110;111;109;101;115;32;61;32;123;34;76;117;100;119;105;103;34;44;32;34;90;111;114;97;34;44;32;34;82;97;112;111;115;97;34;125; @@ -72819,7 +75485,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;110;111;109;101;115;46;108;101;110;103;116;104;32;43;32;34;32;101;110;116;114;97;100;97;115;32;103;117;97;114;100;97;100;97;115;34; -`,hB=` +`,qB=` 83;116;114;105;110;103;91;93;32;110;111;109;101;115;32;61;32;123;34;76;117;100;119;105;103;34;44;32;34;90;111;114;97;34;44;32;34;82;97;112;111;115;97;34;125; @@ -72837,7 +75503,7 @@ lösung: vb-wald-loesung.visustruct 115;97;105;100;97;46;99;108;111;115;101;40;41; -`,gB=` +`,QB=` 83;116;114;105;110;103;32;116;101;120;116;111;32;61;32;70;105;108;101;115;46;114;101;97;100;83;116;114;105;110;103;40;80;97;116;104;46;111;102;40;34;97;110;105;109;97;105;115;46;99;115;118;34;41;41; @@ -72890,7 +75556,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;40;108;105;110;104;97;115;46;108;101;110;103;116;104;32;45;32;49;41;32;43;32;34;32;97;110;105;109;97;105;115;32;103;117;97;114;100;97;100;111;115;34; -`,pB=` +`,UB=` 83;116;114;105;110;103;32;116;101;120;116;111;32;61;32;70;105;108;101;115;46;114;101;97;100;83;116;114;105;110;103;40;80;97;116;104;46;111;102;40;34;97;110;105;109;97;105;115;46;99;115;118;34;41;41; @@ -72911,7 +75577,7 @@ lösung: vb-wald-loesung.visustruct 115;97;105;100;97;46;99;108;111;115;101;40;41; -`,fB=` +`,YB=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;108;101;105;116;111;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;97;110;105;109;97;105;115;46;99;115;118;34;41;41; @@ -72955,7 +75621,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;113;117;97;110;116;105;100;97;100;101;32;43;32;34;32;102;114;97;115;101;115;32;103;117;97;114;100;97;100;97;115;34; -`,bB=` +`,$B=` 66;117;102;102;101;114;101;100;82;101;97;100;101;114;32;108;101;105;116;111;114;32;61;32;110;101;119;32;66;117;102;102;101;114;101;100;82;101;97;100;101;114;40;110;101;119;32;70;105;108;101;82;101;97;100;101;114;40;34;97;110;105;109;97;105;115;46;99;115;118;34;41;41; @@ -72976,7 +75642,7 @@ lösung: vb-wald-loesung.visustruct 115;97;105;100;97;46;99;108;111;115;101;40;41; -`,xB=` +`,KB=` 105;110;112;117;116;58;32;105;110;116;32;113;117;97;110;116;105;100;97;100;101;32;34;81;117;97;110;116;111;115;32;98;105;108;104;101;116;101;115;63;34; @@ -72988,7 +75654,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;84;111;116;97;108;58;32;34;32;43;32;116;111;116;97;108; -`,vB=` +`,XB=` 105;110;112;117;116;58;32;105;110;116;32;113;117;97;110;116;105;100;97;100;101;32;34;81;117;97;110;116;111;115;32;98;105;108;104;101;116;101;115;63;34; @@ -73000,7 +75666,7 @@ lösung: vb-wald-loesung.visustruct 100;111;117;98;108;101;32;116;111;116;97;108;32;61;32;113;117;97;110;116;105;100;97;100;101;32;42;32;56;46;53; -`,yB=` +`,eO=` 105;110;112;117;116;58;32;105;110;116;32;97;32;34;80;114;105;109;101;105;114;111;32;110;250;109;101;114;111;34; @@ -73024,7 +75690,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;98; -`,wB=` +`,tO=` 105;110;112;117;116;58;32;105;110;116;32;97;32;34;80;114;105;109;101;105;114;111;32;110;250;109;101;114;111;34; @@ -73045,7 +75711,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;98; -`,zB=` +`,nO=` 105;110;116;32;97;32;61;32;51; @@ -73069,7 +75735,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;98;32;61;32;34;32;43;32;98; -`,IB=` +`,iO=` 105;110;116;91;93;32;99;97;114;116;97;115;32;61;32;110;101;119;32;105;110;116;91;53;93; @@ -73128,7 +75794,7 @@ lösung: vb-wald-loesung.visustruct -`,kB=` +`,aO=` 105;110;116;91;93;32;99;97;114;116;97;115;32;61;32;110;101;119;32;105;110;116;91;53;93; @@ -73187,7 +75853,7 @@ lösung: vb-wald-loesung.visustruct -`,SB=` +`,sO=` 105;110;116;91;93;32;99;97;114;116;97;115;32;61;32;123;50;44;32;51;44;32;53;44;32;55;44;32;56;44;32;49;48;44;32;49;50;44;32;49;51;44;32;49;53;44;32;49;56;44;32;50;48;44;32;50;49;44;32;50;52;44;32;50;55;44;32;51;48;125; @@ -73261,7 +75927,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;67;111;109;112;97;114;97;231;245;101;115;58;32;34;32;43;32;99;111;109;112;97;114;97;99;111;101;115; -`,TB=` +`,rO=` 105;110;116;91;93;32;99;97;114;116;97;115;32;61;32;123;55;44;32;51;44;32;49;48;44;32;53;44;32;50;125; @@ -73310,7 +75976,7 @@ lösung: vb-wald-loesung.visustruct -`,_B=` +`,oO=` 105;110;116;91;93;32;99;97;114;116;97;115;32;61;32;123;56;44;32;52;44;32;49;49;44;32;52;44;32;54;125; @@ -73359,7 +76025,7 @@ lösung: vb-wald-loesung.visustruct -`,jB=` +`,lO=` 105;110;116;91;93;32;99;97;114;116;97;115;32;61;32;123;50;44;32;51;44;32;53;44;32;55;44;32;56;44;32;49;48;44;32;49;50;44;32;49;51;44;32;49;53;44;32;49;56;44;32;50;48;44;32;50;49;44;32;50;52;44;32;50;55;44;32;51;48;125; @@ -73417,7 +76083,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;67;111;109;112;97;114;97;231;245;101;115;58;32;34;32;43;32;99;111;109;112;97;114;97;99;111;101;115; -`,CB=` +`,uO=` 105;110;116;91;93;32;112;111;110;116;111;115;32;61;32;123;51;44;32;53;44;32;56;125; @@ -73436,7 +76102,7 @@ lösung: vb-wald-loesung.visustruct -`,AB=` +`,mO=` 105;110;116;91;93;32;112;111;110;116;111;115;32;61;32;123;51;44;32;53;44;32;56;125; @@ -73455,7 +76121,7 @@ lösung: vb-wald-loesung.visustruct -`,PB=` +`,cO=` 105;110;116;32;105;32;61;32;48; @@ -73468,7 +76134,7 @@ lösung: vb-wald-loesung.visustruct -`,DB=` +`,dO=` 105;110;116;32;110;117;109;101;114;111;32;61;32;53; @@ -73492,7 +76158,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;68;101;112;111;105;115;58;32;34;32;43;32;102;105;108;97;91;48;93;32;43;32;34;44;32;34;32;43;32;102;105;108;97;91;49;93; -`,BB=` +`,hO=` 105;110;116;32;105;32;61;32;48; @@ -73505,7 +76171,7 @@ lösung: vb-wald-loesung.visustruct -`,OB=` +`,gO=` 120;32;61;32;120;32;42;32;50; @@ -73514,7 +76180,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;78;111;32;115;117;98;112;114;111;103;114;97;109;97;58;32;120;32;61;32;34;32;43;32;120; -`,MB=` +`,pO=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;110;111;109;101;32;34;78;111;109;101;32;112;114;243;112;114;105;111;34; @@ -73526,7 +76192,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;110;111;109;101;46;99;104;97;114;65;116;40;48;41;32;43;32;34;46;32;34;32;43;32;97;112;101;108;105;100;111;46;99;104;97;114;65;116;40;48;41;32;43;32;34;46;34; -`,ZB=` +`,fO=` 83;116;114;105;110;103;32;112;97;108;97;118;114;97;32;61;32;34;80;97;115;115;97;116;101;109;112;111;34; @@ -73565,7 +76231,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;116;101;120;116; -`,LB=` +`,bO=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;112;97;108;97;118;114;97;32;34;73;110;116;114;111;100;117;122;32;117;109;97;32;112;97;108;97;118;114;97;34; @@ -73587,7 +76253,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;105;110;118;101;114;116;105;100;97; -`,WB=` +`,xO=` 83;116;114;105;110;103;32;108;105;110;104;97;32;61;32;34;76;117;100;119;105;103;59;98;111;100;101;59;55;34; @@ -73606,7 +76272,7 @@ lösung: vb-wald-loesung.visustruct -`,EB=` +`,vO=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;102;114;97;115;101;32;34;73;110;116;114;111;100;117;122;32;117;109;97;32;102;114;97;115;101;34; @@ -73618,7 +76284,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;80;97;108;97;118;114;97;115;58;32;34;32;43;32;112;97;108;97;118;114;97;115;46;108;101;110;103;116;104; -`,NB=` +`,yO=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;112;97;108;97;118;114;97;32;34;73;110;116;114;111;100;117;122;32;117;109;97;32;112;97;108;97;118;114;97;34; @@ -73650,7 +76316,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;78;250;109;101;114;111;32;100;101;32;97;58;32;34;32;43;32;113;117;97;110;116;105;100;97;100;101; -`,FB=` +`,wO=` 83;116;114;105;110;103;32;112;97;108;97;118;114;97;32;61;32;34;80;97;115;115;97;116;101;109;112;111;34; @@ -73674,7 +76340,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;112;97;108;97;118;114;97;46;116;111;85;112;112;101;114;67;97;115;101;40;41; -`,RB=` +`,zO=` 105;110;112;117;116;58;32;105;110;116;32;97;110;122;97;104;108;32;34;87;105;101;32;118;105;101;108;101;32;75;97;114;116;101;110;63;34; @@ -73686,7 +76352,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;71;101;115;97;109;116;58;32;34;32;43;32;103;101;115;97;109;116; -`,JB=` +`,IO=` 105;110;112;117;116;58;32;105;110;116;32;97;110;122;97;104;108;32;34;87;105;101;32;118;105;101;108;101;32;75;97;114;116;101;110;63;34; @@ -73698,7 +76364,7 @@ lösung: vb-wald-loesung.visustruct 100;111;117;98;108;101;32;103;101;115;97;109;116;32;61;32;97;110;122;97;104;108;32;42;32;56;46;53; -`,GB=` +`,kO=` 105;110;112;117;116;58;32;105;110;116;32;97;32;34;69;114;115;116;101;32;90;97;104;108;34; @@ -73722,7 +76388,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;98; -`,HB=` +`,SO=` 105;110;112;117;116;58;32;105;110;116;32;97;32;34;69;114;115;116;101;32;90;97;104;108;34; @@ -73743,7 +76409,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;98; -`,VB=` +`,TO=` 105;110;116;32;97;32;61;32;51; @@ -73767,7 +76433,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;98;32;61;32;34;32;43;32;98; -`,qB=` +`,_O=` 105;110;116;91;93;32;107;97;114;116;101;110;32;61;32;110;101;119;32;105;110;116;91;53;93; @@ -73826,7 +76492,7 @@ lösung: vb-wald-loesung.visustruct -`,QB=` +`,jO=` 105;110;116;91;93;32;107;97;114;116;101;110;32;61;32;110;101;119;32;105;110;116;91;53;93; @@ -73885,7 +76551,7 @@ lösung: vb-wald-loesung.visustruct -`,UB=` +`,AO=` 105;110;116;91;93;32;107;97;114;116;101;110;32;61;32;123;50;44;32;51;44;32;53;44;32;55;44;32;56;44;32;49;48;44;32;49;50;44;32;49;51;44;32;49;53;44;32;49;56;44;32;50;48;44;32;50;49;44;32;50;52;44;32;50;55;44;32;51;48;125; @@ -73959,7 +76625,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;86;101;114;103;108;101;105;99;104;101;58;32;34;32;43;32;118;101;114;103;108;101;105;99;104;101; -`,YB=` +`,CO=` 105;110;116;91;93;32;107;97;114;116;101;110;32;61;32;123;55;44;32;51;44;32;49;48;44;32;53;44;32;50;125; @@ -74008,7 +76674,7 @@ lösung: vb-wald-loesung.visustruct -`,$B=` +`,DO=` 105;110;116;91;93;32;107;97;114;116;101;110;32;61;32;123;56;44;32;52;44;32;49;49;44;32;52;44;32;54;125; @@ -74057,7 +76723,7 @@ lösung: vb-wald-loesung.visustruct -`,KB=` +`,PO=` 105;110;116;91;93;32;107;97;114;116;101;110;32;61;32;123;50;44;32;51;44;32;53;44;32;55;44;32;56;44;32;49;48;44;32;49;50;44;32;49;51;44;32;49;53;44;32;49;56;44;32;50;48;44;32;50;49;44;32;50;52;44;32;50;55;44;32;51;48;125; @@ -74115,7 +76781,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;86;101;114;103;108;101;105;99;104;101;58;32;34;32;43;32;118;101;114;103;108;101;105;99;104;101; -`,XB=` +`,BO=` 105;110;116;91;93;32;112;117;110;107;116;101;32;61;32;123;51;44;32;53;44;32;56;125; @@ -74134,7 +76800,7 @@ lösung: vb-wald-loesung.visustruct -`,eO=` +`,OO=` 105;110;116;91;93;32;112;117;110;107;116;101;32;61;32;123;51;44;32;53;44;32;56;125; @@ -74153,7 +76819,7 @@ lösung: vb-wald-loesung.visustruct -`,tO=` +`,MO=` 105;110;116;32;105;32;61;32;48; @@ -74166,7 +76832,7 @@ lösung: vb-wald-loesung.visustruct -`,nO=` +`,ZO=` 105;110;116;32;122;97;104;108;32;61;32;53; @@ -74190,7 +76856,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;78;97;99;104;104;101;114;58;32;34;32;43;32;114;101;105;104;101;91;48;93;32;43;32;34;44;32;34;32;43;32;114;101;105;104;101;91;49;93; -`,iO=` +`,LO=` 105;110;116;32;105;32;61;32;48; @@ -74203,7 +76869,7 @@ lösung: vb-wald-loesung.visustruct -`,aO=` +`,WO=` 120;32;61;32;120;32;42;32;50; @@ -74212,7 +76878,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;73;109;32;85;110;116;101;114;112;114;111;103;114;97;109;109;58;32;120;32;61;32;34;32;43;32;120; -`,sO=` +`,EO=` 105;110;116;32;97;98;115;116;97;110;100;32;61;32;109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41; @@ -74221,7 +76887,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;65;98;115;116;97;110;100;58;32;34;32;43;32;97;98;115;116;97;110;100;32;43;32;34;32;99;109;34;41; -`,rO=` +`,NO=` 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;60;32;49;48; @@ -74247,7 +76913,7 @@ lösung: vb-wald-loesung.visustruct -`,oO=` +`,FO=` 33;109;98;111;116;46;105;115;66;117;116;116;111;110;66;40;41; @@ -74274,7 +76940,7 @@ lösung: vb-wald-loesung.visustruct -`,lO=` +`,RO=` 109;98;111;116;46;115;101;116;76;101;100;40;50;53;53;44;32;48;44;32;48;41; @@ -74292,7 +76958,50 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;101;116;76;101;100;40;48;44;32;50;53;53;44;32;48;41; -`,uO=` +`,JO=` + + + 105;110;116;32;122;117;115;116;97;110;100;32;61;32;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;54; + 105;43;43; + + + 122;117;115;116;97;110;100; + + + 109;98;111;116;46;115;101;116;76;101;100;40;50;53;53;44;32;48;44;32;48;41; + + + 122;117;115;116;97;110;100;32;61;32;49; + + + + + 109;98;111;116;46;115;101;116;76;101;100;40;48;44;32;50;53;53;44;32;48;41; + + + 122;117;115;116;97;110;100;32;61;32;50; + + + + + 109;98;111;116;46;115;101;116;76;101;100;40;50;53;53;44;32;50;48;48;44;32;48;41; + + + 122;117;115;116;97;110;100;32;61;32;48; + + + + + 109;98;111;116;46;112;97;117;115;101;40;49;48;48;48;41; + + + + +`,GO=` 109;98;111;116;46;103;101;116;76;105;110;101;40;41;32;61;61;32;48; @@ -74322,7 +77031,7 @@ lösung: vb-wald-loesung.visustruct -`,mO=` +`,HO=` 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;72;97;108;108;111;33;34;41; @@ -74334,7 +77043,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;73;99;104;32;98;105;110;32;86;105;115;117;66;111;116;34;41; -`,cO=` +`,VO=` 105;110;116;32;122;97;104;108;32;61;32;48; @@ -74386,7 +77095,7 @@ lösung: vb-wald-loesung.visustruct -`,dO=` +`,qO=` 33;109;98;111;116;46;103;101;116;67;111;108;111;114;40;41;46;101;113;117;97;108;115;40;34;114;111;116;34;41; @@ -74397,7 +77106,7 @@ lösung: vb-wald-loesung.visustruct -`,hO=` +`,QO=` 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;49;53; @@ -74408,7 +77117,7 @@ lösung: vb-wald-loesung.visustruct -`,gO=` +`,UO=` 109;98;111;116;46;103;101;116;76;105;110;101;40;41;32;61;61;32;48; @@ -74419,7 +77128,7 @@ lösung: vb-wald-loesung.visustruct -`,pO=` +`,YO=` 83;116;114;105;110;103;32;119;111;114;116;32;61;32;34;86;105;115;117;66;111;116;34; @@ -74438,7 +77147,7 @@ lösung: vb-wald-loesung.visustruct -`,fO=` +`,$O=` 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;49;53; @@ -74452,7 +77161,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;112;108;97;121;84;111;110;101;40;52;52;48;44;32;51;48;48;41; -`,bO=` +`,KO=` 109;98;111;116;46;108;101;100;40;48;41;46;115;101;116;67;111;108;111;114;40;34;114;111;116;34;41; @@ -74464,7 +77173,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;108;101;100;40;52;41;46;115;101;116;67;111;108;111;114;40;34;103;114;252;110;34;41; -`,xO=` +`,XO=` 105;110;116;32;105;32;61;32;48; @@ -74480,7 +77189,7 @@ lösung: vb-wald-loesung.visustruct -`,vO=` +`,eM=` 33;109;98;111;116;46;103;101;116;67;111;108;111;114;40;41;46;101;113;117;97;108;115;40;34;98;108;97;117;34;41; @@ -74508,7 +77217,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;71;101;112;97;114;107;116;33;34;41; -`,yO=` +`,tM=` 109;98;111;116;46;102;111;114;119;97;114;100;40;41; @@ -74526,7 +77235,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;102;111;114;119;97;114;100;40;41; -`,wO=` +`,nM=` 83;116;114;105;110;103;91;93;32;102;97;114;98;101;110;32;61;32;123;34;114;111;116;34;44;32;34;103;101;108;98;34;44;32;34;103;114;252;110;34;44;32;34;98;108;97;117;34;44;32;34;108;105;108;97;34;125; @@ -74542,7 +77251,7 @@ lösung: vb-wald-loesung.visustruct -`,zO=` +`,iM=` 109;98;111;116;46;103;101;116;67;111;108;111;114;40;41; @@ -74568,7 +77277,7 @@ lösung: vb-wald-loesung.visustruct -`,IO=` +`,aM=` 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;60;32;50;48; @@ -74584,7 +77293,7 @@ lösung: vb-wald-loesung.visustruct -`,kO=` +`,sM=` 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;49;53; @@ -74595,7 +77304,7 @@ lösung: vb-wald-loesung.visustruct -`,SO=` +`,rM=` 105;110;116;32;115;99;104;114;105;116;116;101;32;61;32;48; @@ -74615,7 +77324,38 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;83;99;104;114;105;116;116;101;58;32;34;32;43;32;83;99;104;114;105;116;116;101;41; -`,TO=` +`,oM=` + + + 105;110;116;32;115;101;105;116;101;32;61;32;49;48; + + + 105;110;116;32;103;101;115;97;109;116;32;61;32;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;52; + 105;43;43; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;115;101;105;116;101;41; + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + 103;101;115;97;109;116;32;61;32;71;101;115;97;109;116;32;43;32;115;101;105;116;101; + + + 115;101;105;116;101;32;61;32;115;101;105;116;101;32;43;32;49;48; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;83;116;114;101;99;107;101;58;32;34;32;43;32;103;101;115;97;109;116;32;43;32;34;32;99;109;34;41; + + +`,lM=` 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;49;53; @@ -74629,7 +77369,52 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;112;108;97;121;84;111;110;101;40;52;52;48;41; -`,_O=` +`,uM=` + + + 99;111;110;115;116;32;105;110;116;32;83;69;73;84;69;32;61;32;51;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;52; + 105;43;43; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;115;101;105;116;101;41; + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + + +`,mM=` + + + 109;98;111;116;46;103;101;116;66;114;105;103;104;116;110;101;115;115;40;41;32;60;32;50;48; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;78;97;99;104;116;41; + + + + + 109;98;111;116;46;103;101;116;66;114;105;103;104;116;110;101;115;115;40;41;32;60;32;54;48; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;68;228;109;109;101;114;117;110;103;34;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;84;97;103;34;41; + + + + + + +`,cM=` 105;110;116;32;115;99;104;114;105;116;116;101;32;61;32;48; @@ -74659,7 +77444,7 @@ lösung: vb-wald-loesung.visustruct -`,jO=` +`,dM=` 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;49;53;32;38;38;32;109;98;111;116;46;103;101;116;76;105;110;101;40;41;32;61;61;32;48; @@ -74673,7 +77458,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;112;108;97;121;116;111;110;101;40;52;52;48;44;32;51;48;48;41; -`,CO=` +`,hM=` 33;109;98;111;116;46;103;101;116;67;111;108;111;114;40;41;46;101;113;117;97;108;115;40;34;98;108;97;117;34;41; @@ -74697,7 +77482,48 @@ lösung: vb-wald-loesung.visustruct -`,AO=` +`,gM=` + + + 105;110;116;32;109;97;120;32;61;32;48; + + + 105;110;116;32;114;105;99;104;116;117;110;103;32;61;32;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;52; + 105;43;43; + + + 105;110;116;32;97;98;115;116;97;110;100;32;61;32;109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41; + + + 97;98;115;116;97;110;100;32;62;32;109;97;120; + + + 109;97;120;32;61;32;97;98;115;116;97;110;100; + + + 114;105;99;104;116;117;110;103;32;61;32;73; + + + + + 248; + + + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;82;105;99;104;116;117;110;103;58;32;34;32;43;32;114;105;99;104;116;117;110;103;41; + + +`,pM=` 109;98;111;116;46;103;101;116;76;105;110;101;40;41; @@ -74723,7 +77549,7 @@ lösung: vb-wald-loesung.visustruct -`,PO=` +`,fM=` 105;110;116;32;105;32;61;32;48; @@ -74756,7 +77582,7 @@ lösung: vb-wald-loesung.visustruct -`,DO=` +`,bM=` @@ -74783,7 +77609,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;71;101;115;116;111;112;112;116;41; -`,BO=` +`,xM=` 109;98;111;116;46;103;101;116;66;114;105;103;104;116;110;101;115;115;40;41;32;60;32;51;48; @@ -74802,7 +77628,49 @@ lösung: vb-wald-loesung.visustruct -`,OO=` +`,vM=` + + + 98;111;111;108;101;97;110;32;108;97;117;116;32;61;32;102;97;108;115;101; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;51;48; + 105;43;43; + + + 109;98;111;116;46;103;101;116;76;111;117;100;110;101;115;115;40;41;32;62;32;54;48; + + + 108;97;117;116;32;61;32;84;114;117;101; + + + + + 248; + + + + + 109;98;111;116;46;112;97;117;115;101;40;49;48;48;41; + + + + + 108;97;117;116; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;71;101;107;108;97;116;115;99;104;116;33;34;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;65;108;108;101;115;32;115;116;105;108;108;34;41; + + + + +`,yM=` 109;98;111;116;46;103;101;116;76;111;117;100;110;101;115;115;40;41;32;62;32;54;48; @@ -74818,7 +77686,7 @@ lösung: vb-wald-loesung.visustruct -`,MO=` +`,wM=` 109;98;111;116;46;103;101;116;80;105;116;99;104;40;41;32;62;32;45;53;32;38;38;32;109;98;111;116;46;103;101;116;80;105;116;99;104;40;41;32;60;32;53;32;38;38;32;109;98;111;116;46;103;101;116;82;111;108;108;40;41;32;62;32;45;53;32;38;38;32;109;98;111;116;46;103;101;116;82;111;108;108;40;41;32;60;32;53; @@ -74834,7 +77702,7 @@ lösung: vb-wald-loesung.visustruct -`,ZO=` +`,zM=` 105;110;116;32;105;32;61;32;48; @@ -74856,7 +77724,7 @@ lösung: vb-wald-loesung.visustruct -`,LO=` +`,IM=` 105;110;116;32;105;32;61;32;48; @@ -74875,7 +77743,7 @@ lösung: vb-wald-loesung.visustruct -`,WO=` +`,kM=` 105;110;116;32;105;32;61;32;49; @@ -74888,7 +77756,7 @@ lösung: vb-wald-loesung.visustruct -`,EO=` +`,SM=` 105;110;116;91;93;32;119;101;114;116;101;32;61;32;110;101;119;32;105;110;116;91;53;93; @@ -74926,7 +77794,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;77;105;116;116;101;108;119;101;114;116;58;32;34;32;43;32;109;105;116;116;101;108;119;101;114;116;41; -`,NO=` +`,TM=` 105;110;116;32;105;32;61;32;51; @@ -74945,7 +77813,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;76;111;115;33;34;41; -`,FO=` +`,_M=` 83;116;114;105;110;103;32;116;101;120;116;32;61;32;34;72;97;108;108;111;32;75;108;97;115;115;101;34; @@ -74954,7 +77822,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;84;101;120;116;32;43;32;34;32;40;34;32;43;32;116;101;120;116;46;108;101;110;103;116;104;40;41;32;43;32;34;41;34;41; -`,RO=` +`,jM=` 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;49;53; @@ -74998,7 +77866,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;83;116;111;112;40;41; -`,JO=` +`,AM=` 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;65;107;107;117;58;32;34;32;43;32;109;98;111;116;46;103;101;116;66;97;116;116;101;114;121;40;41;32;43;32;34;32;37;34;41; @@ -75017,7 +77885,55 @@ lösung: vb-wald-loesung.visustruct -`,GO=` +`,CM=` + + + 83;116;114;105;110;103;32;122;117;115;116;97;110;100;32;61;32;34;114;111;116;34; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;54; + 105;43;43; + + + 122;117;115;116;97;110;100;46;101;113;117;97;108;115;40;34;114;111;116;34;41; + + + 109;98;111;116;46;115;101;116;76;101;100;40;50;53;53;44;32;48;44;32;48;41; + + + 122;117;115;116;97;110;100;32;61;32;103;114;252;110; + + + + + 122;117;115;116;97;110;100;46;101;113;117;97;108;115;40;34;103;114;252;110;34;41; + + + 109;98;111;116;46;115;101;116;76;101;100;40;48;44;32;50;53;53;44;32;48;41; + + + 122;117;115;116;97;110;100;32;61;32;34;103;101;108;98;34; + + + + + 109;98;111;116;46;115;101;116;76;101;100;40;50;53;53;44;32;50;48;48;44;32;48;41; + + + 122;117;115;116;97;110;100;32;61;32;34;114;111;116;34; + + + + + + + 109;98;111;116;46;112;97;117;115;101;40;49;48;48;48;41; + + + + +`,DM=` 105;110;116;32;105;32;61;32;48; @@ -75039,7 +77955,7 @@ lösung: vb-wald-loesung.visustruct -`,HO=` +`,PM=` 109;98;111;116;46;100;114;105;118;101;40;53;48;44;32;53;48;41; @@ -75056,7 +77972,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;116;111;112;40;41; -`,VO=` +`,BM=` 109;98;111;116;46;102;111;114;119;97;114;100;40;41; @@ -75074,7 +77990,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;102;111;114;119;97;114;100;40;41; -`,qO=` +`,OM=` 33;109;98;111;116;46;103;101;116;67;111;108;111;114;40;41;46;101;113;117;97;108;115;40;34;114;111;116;34;41; @@ -75110,7 +78026,7 @@ lösung: vb-wald-loesung.visustruct -`,QO=` +`,MM=` 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;65;107;107;117;58;32;34;32;43;32;109;98;111;116;46;103;101;116;66;97;116;116;101;114;121;40;41;32;43;32;34;32;37;34;41; @@ -75129,7 +78045,55 @@ lösung: vb-wald-loesung.visustruct -`,UO=` +`,ZM=` + + + 83;116;114;105;110;103;32;122;117;115;116;97;110;100;32;61;32;34;114;111;116;34; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;54; + 105;43;43; + + + 122;117;115;116;97;110;100;46;101;113;117;97;108;115;40;34;114;111;116;34;41; + + + 109;98;111;116;46;115;101;116;76;101;100;40;50;53;53;44;32;48;44;32;48;41; + + + 122;117;115;116;97;110;100;32;61;32;34;103;114;252;110;34; + + + + + 122;117;115;116;97;110;100;46;101;113;117;97;108;115;40;34;103;114;252;110;34;41; + + + 109;98;111;116;46;115;101;116;76;101;100;40;48;44;32;50;53;53;44;32;48;41; + + + 122;117;115;116;97;110;100;32;61;32;34;103;101;108;98;34; + + + + + 109;98;111;116;46;115;101;116;76;101;100;40;50;53;53;44;32;50;48;48;44;32;48;41; + + + 122;117;115;116;97;110;100;32;61;32;34;114;111;116;34; + + + + + + + 109;98;111;116;46;112;97;117;115;101;40;49;48;48;48;41; + + + + +`,LM=` 33;109;98;111;116;46;103;101;116;67;111;108;111;114;40;41;46;101;113;117;97;108;115;40;34;98;108;97;117;34;41; @@ -75153,7 +78117,7 @@ lösung: vb-wald-loesung.visustruct -`,YO=` +`,WM=` 105;110;116;32;105;32;61;32;48; @@ -75175,7 +78139,7 @@ lösung: vb-wald-loesung.visustruct -`,$O=` +`,EM=` 105;110;116;32;105;32;61;32;51; @@ -75194,7 +78158,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;76;111;115;33;34;41; -`,KO=` +`,NM=` 105;110;116;32;105;32;61;32;49; @@ -75207,7 +78171,7 @@ lösung: vb-wald-loesung.visustruct -`,XO=` +`,FM=` 105;110;116;32;105;32;61;32;48; @@ -75240,7 +78204,68 @@ lösung: vb-wald-loesung.visustruct -`,eM=` +`,RM=` + + + 98;111;111;108;101;97;110;32;108;97;117;116;32;61;32;102;97;108;115;101; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;51;48; + 105;43;43; + + + 109;98;111;116;46;103;101;116;76;111;117;100;110;101;115;115;40;41;32;62;32;54;48; + + + 108;97;117;116;32;61;32;116;114;117;101; + + + + + 248; + + + + + 109;98;111;116;46;112;97;117;115;101;40;49;48;48;41; + + + + + 108;97;117;116; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;71;101;107;108;97;116;115;99;104;116;33;34;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;65;108;108;101;115;32;115;116;105;108;108;34;41; + + + + +`,JM=` + + + 99;111;110;115;116;32;105;110;116;32;83;69;73;84;69;32;61;32;51;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;52; + 105;43;43; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;83;69;73;84;69;41; + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + + +`,GM=` 109;98;111;116;46;103;101;116;76;111;117;100;110;101;115;115;40;41;32;62;32;54;48; @@ -75256,7 +78281,7 @@ lösung: vb-wald-loesung.visustruct -`,tM=` +`,HM=` 105;110;116;32;105;32;61;32;48; @@ -75275,7 +78300,7 @@ lösung: vb-wald-loesung.visustruct -`,nM=` +`,VM=` 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;49;53; @@ -75319,7 +78344,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;116;111;112;40;41; -`,iM=` +`,qM=` 109;98;111;116;46;103;101;116;66;114;105;103;104;116;110;101;115;115;40;41;32;60;32;51;48; @@ -75338,7 +78363,7 @@ lösung: vb-wald-loesung.visustruct -`,aM=` +`,QM=` 105;110;116;32;115;99;104;114;105;116;116;101;32;61;32;48; @@ -75368,7 +78393,7 @@ lösung: vb-wald-loesung.visustruct -`,sM=` +`,UM=` 105;110;116;32;108;97;101;110;103;101;32;61;32;54;48; @@ -75396,7 +78421,7 @@ lösung: vb-wald-loesung.visustruct -`,rM=` +`,YM=` 105;110;116;32;105;32;61;32;48; @@ -75418,7 +78443,48 @@ lösung: vb-wald-loesung.visustruct -`,oM=` +`,$M=` + + + 105;110;116;32;109;97;120;32;61;32;48; + + + 105;110;116;32;114;105;99;104;116;117;110;103;32;61;32;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;52; + 105;43;43; + + + 105;110;116;32;97;98;115;116;97;110;100;32;61;32;109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41; + + + 97;98;115;116;97;110;100;32;62;32;109;97;120; + + + 109;97;120;32;61;32;97;98;115;116;97;110;100; + + + 114;105;99;104;116;117;110;103;32;61;32;105; + + + + + 248; + + + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;82;105;99;104;116;117;110;103;58;32;34;32;43;32;114;105;99;104;116;117;110;103;41; + + +`,KM=` 105;110;116;32;115;99;104;114;105;116;116;101;32;61;32;48; @@ -75438,7 +78504,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;83;99;104;114;105;116;116;101;58;32;34;32;43;32;115;99;104;114;105;116;116;101;41; -`,lM=` +`,XM=` 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;49;53;32;38;38;32;109;98;111;116;46;103;101;116;76;105;110;101;40;41;32;61;61;32;48; @@ -75452,7 +78518,64 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;112;108;97;121;84;111;110;101;40;52;52;48;44;32;51;48;48;41; -`,uM=` +`,eZ=` + + + 105;110;116;32;115;101;105;116;101;32;61;32;49;48; + + + 105;110;116;32;103;101;115;97;109;116;32;61;32;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;52; + 105;43;43; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;115;101;105;116;101;41; + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + 103;101;115;97;109;116;32;61;32;103;101;115;97;109;116;32;43;32;115;101;105;116;101; + + + 115;101;105;116;101;32;61;32;115;101;105;116;101;32;43;32;49;48; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;83;116;114;101;99;107;101;58;32;34;32;43;32;103;101;115;97;109;116;32;43;32;34;32;99;109;34;41; + + +`,tZ=` + + + 109;98;111;116;46;103;101;116;66;114;105;103;104;116;110;101;115;115;40;41;32;60;32;50;48; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;78;97;99;104;116;34;41; + + + + + 109;98;111;116;46;103;101;116;66;114;105;103;104;116;110;101;115;115;40;41;32;60;32;54;48; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;68;228;109;109;101;114;117;110;103;34;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;84;97;103;34;41; + + + + + + +`,nZ=` @@ -75479,7 +78602,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;71;101;115;116;111;112;112;116;34;41; -`,mM=` +`,iZ=` 83;116;114;105;110;103;32;116;101;120;116;32;61;32;34;72;97;108;108;111;32;75;108;97;115;115;101;34; @@ -75488,7 +78611,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;116;101;120;116;32;43;32;34;32;40;34;32;43;32;116;101;120;116;46;108;101;110;103;116;104;40;41;32;43;32;34;41;34;41; -`,cM=` +`,aZ=` 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;49;53; @@ -75502,7 +78625,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;112;108;97;121;84;111;110;101;40;52;52;48;44;32;51;48;48;41; -`,dM=` +`,sZ=` 109;98;111;116;46;103;101;116;80;105;116;99;104;40;41;32;62;32;45;53;32;38;38;32;109;98;111;116;46;103;101;116;80;105;116;99;104;40;41;32;60;32;53;32;38;38;32;109;98;111;116;46;103;101;116;82;111;108;108;40;41;32;62;32;45;53;32;38;38;32;109;98;111;116;46;103;101;116;82;111;108;108;40;41;32;60;32;53; @@ -75518,7 +78641,7 @@ lösung: vb-wald-loesung.visustruct -`,hM=` +`,rZ=` 109;98;111;116;46;103;101;116;76;111;117;100;110;101;115;115;40;41;32;60;32;53;48; @@ -75532,7 +78655,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;102;111;114;119;97;114;100;40;51;48;41; -`,gM=` +`,oZ=` 105;110;116;32;105;32;61;32;48; @@ -75567,7 +78690,24 @@ lösung: vb-wald-loesung.visustruct -`,pM=` +`,lZ=` + + + 99;111;110;115;116;32;105;110;116;32;65;66;83;84;65;78;68;32;61;32;50;48; + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;65;66;83;84;65;78;68; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;41; + + + + + 109;98;111;116;46;112;108;97;121;84;111;110;101;40;52;52;48;44;32;51;48;48;41; + + +`,uZ=` 109;98;111;116;46;102;111;114;119;97;114;100;40;41; @@ -75593,7 +78733,7 @@ lösung: vb-wald-loesung.visustruct -`,fM=` +`,mZ=` 109;98;111;116;46;102;111;114;119;97;114;100;40;41; @@ -75605,7 +78745,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;102;111;114;119;97;114;100;40;41; -`,bM=` +`,cZ=` 105;110;116;32;115;101;105;116;101;32;61;32;50;48; @@ -75627,7 +78767,119 @@ lösung: vb-wald-loesung.visustruct -`,xM=` +`,dZ=` + + + 99;111;110;115;116;32;105;110;116;32;65;66;83;84;65;78;68;32;61;32;50;48; + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;65;66;83;84;65;78;68; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;41; + + + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;49;56;48;41; + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;65;66;83;84;65;78;68; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;41; + + + + +`,hZ=` + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;50;48; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;41; + + + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;49;56;48;41; + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;50;48; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;41; + + + + +`,gZ=` + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;60;32;49;48; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;83;116;111;112;112;34;41; + + + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;60;32;51;48; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;76;97;110;103;115;97;109;34;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;70;114;101;105;34;41; + + + + + + +`,pZ=` + + + 83;116;114;105;110;103;32;122;117;115;116;97;110;100;32;61;32;34;102;97;104;114;101;110;34; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;50;48; + 105;43;43; + + + 122;117;115;116;97;110;100;46;101;113;117;97;108;115;40;34;102;97;104;114;101;110;34;41; + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;60;32;50;48; + + + 122;117;115;116;97;110;100;32;61;32;34;100;114;101;104;101;110;34; + + + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;41; + + + + + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + 122;117;115;116;97;110;100;32;61;32;34;102;97;104;114;101;110;34; + + + + + + +`,fZ=` 109;98;111;116;46;103;101;116;76;105;110;101;40;41;32;61;61;32;48; @@ -75661,7 +78913,7 @@ lösung: vb-wald-loesung.visustruct -`,vM=` +`,bZ=` 83;116;114;105;110;103;32;119;111;114;116;32;61;32;34;76;117;100;119;105;103;34; @@ -75680,7 +78932,7 @@ lösung: vb-wald-loesung.visustruct -`,yM=` +`,xZ=` 33;109;98;111;116;46;103;101;116;67;111;108;111;114;40;41;46;101;113;117;97;108;115;40;34;114;111;116;34;41; @@ -75724,7 +78976,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;116;111;112;40;41; -`,wM=` +`,vZ=` 109;98;111;116;46;103;101;116;76;105;110;101;40;41; @@ -75750,7 +79002,42 @@ lösung: vb-wald-loesung.visustruct -`,zM=` +`,yZ=` + + + 105;110;116;32;109;97;120;32;61;32;48; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;52; + 105;43;43; + + + 105;110;116;32;97;98;115;116;97;110;100;32;61;32;109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41; + + + 97;98;115;116;97;110;100;32;62;32;109;97;120; + + + 109;97;120;32;61;32;97;98;115;116;97;110;100; + + + + + 248; + + + + + 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;65;109;32;119;101;105;116;101;115;116;101;110;58;32;34;32;43;32;109;97;120;32;43;32;34;32;99;109;34;41; + + +`,wZ=` 105;110;116;91;93;32;116;111;101;110;101;32;61;32;123;50;54;50;44;32;50;57;52;44;32;51;51;48;44;32;51;52;57;44;32;51;57;50;125; @@ -75766,7 +79053,7 @@ lösung: vb-wald-loesung.visustruct -`,IM=` +`,zZ=` 105;110;116;91;93;32;119;101;114;116;101;32;61;32;110;101;119;32;105;110;116;91;53;93; @@ -75804,7 +79091,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;77;105;116;116;101;108;119;101;114;116;58;32;34;32;43;32;109;105;116;116;101;108;119;101;114;116;41; -`,kM=` +`,IZ=` 105;110;116;32;105;32;61;32;48; @@ -75870,7 +79157,7 @@ lösung: vb-wald-loesung.visustruct -`,SM=` +`,kZ=` 109;98;111;116;46;103;101;116;66;114;105;103;104;116;110;101;115;115;40;41;32;60;32;51;48; @@ -75886,7 +79173,7 @@ lösung: vb-wald-loesung.visustruct -`,TM=` +`,SZ=` 109;98;111;116;46;103;101;116;66;114;105;103;104;116;110;101;115;115;40;41;32;60;32;50;48; @@ -75903,7 +79190,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;90;122;122;34;41; -`,_M=` +`,TZ=` @@ -75930,7 +79217,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;112;108;97;121;84;111;110;101;40;52;52;48;44;32;51;48;48;41; -`,jM=` +`,_Z=` 109;98;111;116;46;105;115;66;117;116;116;111;110;65;40;41;32;124;124;32;109;98;111;116;46;105;115;66;117;116;116;111;110;66;40;41; @@ -75946,7 +79233,7 @@ lösung: vb-wald-loesung.visustruct -`,CM=` +`,jZ=` 109;98;111;116;46;102;111;114;119;97;114;100;40;41; @@ -76021,7 +79308,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; -`,AM=` +`,AZ=` 113;117;97;100;114;97;116;40;51;48;41; @@ -76030,7 +79317,7 @@ lösung: vb-wald-loesung.visustruct 113;117;97;100;114;97;116;40;53;48;41; -`,PM=` +`,CZ=` 105;110;116;32;105;32;61;32;48; @@ -76085,7 +79372,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;41; -`,DM=` +`,DZ=` 105;110;116;32;105;32;61;32;48; @@ -76101,7 +79388,7 @@ lösung: vb-wald-loesung.visustruct -`,BM=` +`,PZ=` 105;110;116;32;105;32;61;32;48; @@ -76124,7 +79411,7 @@ lösung: vb-wald-loesung.visustruct -`,OM=` +`,BZ=` 109;98;111;116;46;103;101;116;76;105;110;101;40;41;32;61;61;32;48; @@ -76138,7 +79425,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;116;117;114;110;82;105;103;104;116;40;49;56;48;41; -`,MM=` +`,OZ=` 109;98;111;116;46;103;101;116;80;105;116;99;104;40;41;32;62;32;50;48;32;124;124;32;109;98;111;116;46;103;101;116;80;105;116;99;104;40;41;32;60;32;45;50;48; @@ -76154,7 +79441,27 @@ lösung: vb-wald-loesung.visustruct -`,ZM=` +`,MZ=` + + + 105;110;116;32;115;99;104;114;105;116;116;101;32;61;32;48; + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;49;53; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;41; + + + 115;99;104;114;105;116;116;101;32;61;32;115;99;104;114;105;116;116;101;32;43;32;49; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;83;99;104;114;105;116;116;101;58;32;34;32;43;32;115;99;104;114;105;116;116;101;41; + + +`,ZZ=` 105;110;116;32;105;32;61;32;48; @@ -76206,7 +79513,7 @@ lösung: vb-wald-loesung.visustruct -`,LM=` +`,LZ=` 105;110;116;32;115;101;105;116;101;32;61;32;50;48; @@ -76228,7 +79535,7 @@ lösung: vb-wald-loesung.visustruct -`,WM=` +`,WZ=` 105;110;116;32;115;101;105;116;101;32;61;32;50;48; @@ -76250,7 +79557,7 @@ lösung: vb-wald-loesung.visustruct -`,EM=` +`,EZ=` 105;110;116;32;105;32;61;32;49; @@ -76266,7 +79573,7 @@ lösung: vb-wald-loesung.visustruct -`,NM=` +`,NZ=` 33;109;98;111;116;46;105;115;66;117;116;116;111;110;65;40;41; @@ -76280,7 +79587,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;102;111;114;119;97;114;100;40;51;48;41; -`,FM=` +`,FZ=` 105;110;116;32;114;117;110;100;101;32;61;32;49; @@ -76314,7 +79621,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;102;111;114;119;97;114;100;40;53;48;41; -`,RM=` +`,RZ=` 105;110;116;32;108;97;101;110;103;101;32;61;32;54;48; @@ -76348,7 +79655,33 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;83;116;114;101;99;107;101;58;32;34;32;43;32;115;116;114;101;99;107;101;32;43;32;34;32;99;109;34;41; -`,JM=` +`,JZ=` + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;60;32;49;48; + + + 109;98;111;116;46;98;97;99;107;119;97;114;100;40;53;41; + + + + + 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;60;32;51;48; + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;53;41; + + + + + 109;98;111;116;46;102;111;114;119;97;114;100;40;50;48;41; + + + + + + +`,GZ=` 109;98;111;116;46;112;108;97;121;84;111;110;101;40;50;54;50;44;32;51;48;48;41; @@ -76366,7 +79699,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;112;108;97;121;84;111;110;101;40;51;57;50;44;32;51;48;48;41; -`,GM=` +`,HZ=` 105;110;116;32;105;32;61;32;48; @@ -76388,7 +79721,7 @@ lösung: vb-wald-loesung.visustruct -`,HM=` +`,VZ=` 105;110;116;32;108;105;110;107;115;32;61;32;57;57; @@ -76420,7 +79753,7 @@ lösung: vb-wald-loesung.visustruct -`,VM=` +`,qZ=` 105;110;116;32;105;32;61;32;48; @@ -76436,7 +79769,7 @@ lösung: vb-wald-loesung.visustruct -`,qM=` +`,QZ=` 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;62;32;49;53;32;38;38;32;109;98;111;116;46;103;101;116;76;105;110;101;40;41;32;61;61;32;48; @@ -76452,7 +79785,7 @@ lösung: vb-wald-loesung.visustruct -`,QM=` +`,UZ=` 105;110;116;32;115;101;105;116;101;32;61;32;51;48; @@ -76471,7 +79804,7 @@ lösung: vb-wald-loesung.visustruct -`,UM=` +`,YZ=` 105;110;116;32;105;32;61;32;48; @@ -76504,7 +79837,7 @@ lösung: vb-wald-loesung.visustruct -`,YM=` +`,$Z=` 109;98;111;116;46;103;101;116;76;105;110;101;40;41;32;61;61;32;48; @@ -76543,7 +79876,7 @@ lösung: vb-wald-loesung.visustruct -`,$M=` +`,KZ=` 109;98;111;116;46;103;101;116;68;105;115;116;97;110;99;101;40;41;32;60;32;50;48; @@ -76559,7 +79892,49 @@ lösung: vb-wald-loesung.visustruct -`,KM=` +`,XZ=` + + + 98;111;111;108;101;97;110;32;100;117;110;107;101;108;32;61;32;102;97;108;115;101; + + + 105;110;116;32;105;32;61;32;48; + 105;32;60;32;51;48; + 105;43;43; + + + 109;98;111;116;46;103;101;116;66;114;105;103;104;116;110;101;115;115;40;41;32;60;32;50;48; + + + 100;117;110;107;101;108;32;61;32;116;114;117;101; + + + + + 248; + + + + + 109;98;111;116;46;112;97;117;115;101;40;49;48;48;41; + + + + + 100;117;110;107;101;108; + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;69;115;32;119;97;114;32;100;117;110;107;101;108;34;41; + + + + + 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;73;109;109;101;114;32;104;101;108;108;34;41; + + + + +`,eL=` 105;110;116;32;115;116;114;101;99;107;101;32;61;32;122;101;110;116;105;109;101;116;101;114;40;51;41; @@ -76571,13 +79946,13 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;104;111;119;84;101;120;116;40;34;83;116;114;101;99;107;101;58;32;34;32;43;32;115;116;114;101;99;107;101;32;43;32;34;32;99;109;34;41; -`,XM=` +`,tL=` 114;101;116;117;114;110;32;117;109;100;114;101;104;117;110;103;101;110;32;42;32;50;48; -`,eZ=` +`,nL=` 109;98;111;116;46;114;101;115;101;116;84;105;109;101;114;40;41; @@ -76597,7 +79972,7 @@ lösung: vb-wald-loesung.visustruct 109;98;111;116;46;115;116;111;112;40;41; -`,tZ=` +`,iL=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;118;111;114;110;97;109;101;32;34;86;111;114;110;97;109;101;34; @@ -76609,7 +79984,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;118;111;114;110;97;109;101;46;99;104;97;114;65;116;40;48;41;32;43;32;34;46;32;34;32;43;32;110;97;99;104;110;97;109;101;46;99;104;97;114;65;116;40;48;41;32;43;32;34;46;34; -`,nZ=` +`,aL=` 83;116;114;105;110;103;32;119;111;114;116;32;61;32;34;90;105;101;103;101;110;98;111;99;107;34; @@ -76648,7 +80023,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;116;101;120;116; -`,iZ=` +`,sL=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;119;111;114;116;32;34;87;111;114;116;32;101;105;110;103;101;98;101;110;34; @@ -76670,7 +80045,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;114;117;101;99;107;119;97;101;114;116;115; -`,aZ=` +`,rL=` 83;116;114;105;110;103;32;122;101;105;108;101;32;61;32;34;76;117;100;119;105;103;59;71;101;105;223;98;111;99;107;59;55;34; @@ -76689,7 +80064,7 @@ lösung: vb-wald-loesung.visustruct -`,sZ=` +`,oL=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;115;97;116;122;32;34;83;97;116;122;32;101;105;110;103;101;98;101;110;34; @@ -76701,7 +80076,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;87;246;114;116;101;114;58;32;34;32;43;32;119;111;101;114;116;101;114;46;108;101;110;103;116;104; -`,rZ=` +`,lL=` 105;110;112;117;116;58;32;83;116;114;105;110;103;32;119;111;114;116;32;34;87;111;114;116;32;101;105;110;103;101;98;101;110;34; @@ -76733,7 +80108,7 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;34;65;110;122;97;104;108;32;101;58;32;34;32;43;32;97;110;122;97;104;108; -`,oZ=` +`,uL=` 83;116;114;105;110;103;32;119;111;114;116;32;61;32;34;71;101;105;223;98;111;99;107;34; @@ -76757,14 +80132,14 @@ lösung: vb-wald-loesung.visustruct 111;117;116;112;117;116;58;32;119;111;114;116;46;116;111;85;112;112;101;114;67;97;115;101;40;41; -`,lZ=`// Labyrinth mit Ausgängen (nach Kara): jede Wandreihe hat genau eine Lücke, immer weiter rechts. Ein Zeichen = 30 cm. +`,mL=`// Labyrinth mit Ausgängen (nach Kara): jede Wandreihe hat genau eine Lücke, immer weiter rechts. Ein Zeichen = 30 cm. raster: 3 .......Z #####.## ........ ##.##### >....... -`,uZ=`// Labyrinth mit Ausgängen, drei Reihen. Ein Zeichen = 30 cm. +`,cL=`// Labyrinth mit Ausgängen, drei Reihen. Ein Zeichen = 30 cm. raster: 3 ........Z ######.## @@ -76773,20 +80148,20 @@ raster: 3 ......... .######## >........ -`,mZ=`// Um die Ecke (Sequenz im Kurs, Lektion 5): ein Zeichen = 30 cm. +`,dL=`// Um die Ecke (Sequenz im Kurs, Lektion 5): ein Zeichen = 30 cm. raster: 3 Z.... ###.. ..... ..### ^.... -`,cZ=`// Fahre bis Rot: kurzer Weg +`,hL=`// Fahre bis Rot: kurzer Weg ..... ..r.. ..... ..... ..^.. -`,dZ=`// Fahre bis Rot: erst kommt ein grünes Feld +`,gL=`// Fahre bis Rot: erst kommt ein grünes Feld ..... ..r.. ..... @@ -76795,21 +80170,21 @@ Z.... ..... ..... ..^.. -`,hZ=`// Bis Blau, bei Grün piepen +`,pL=`// Bis Blau, bei Grün piepen ..... ..b.. ..... ..g.. ..... ..^.. -`,gZ=`// Bis Blau, ohne grünes Feld +`,fL=`// Bis Blau, ohne grünes Feld ..... ..b.. ..... ..... ..... ..^.. -`,pZ=`// Hindernis ausweichen: ein Klotz im Weg, das rote Feld liegt dahinter. +`,bL=`// Hindernis ausweichen: ein Klotz im Weg, das rote Feld liegt dahinter. ......... .....r... .....o... @@ -76820,7 +80195,7 @@ Z.... ......... ......... ..^...... -`,fZ=`// Hindernis ausweichen: zwei Klötze im Weg. +`,xL=`// Hindernis ausweichen: zwei Klötze im Weg. ......... .......r. .......o. @@ -76835,7 +80210,7 @@ Z.... ......... ......... .^....... -`,bZ=`// Labyrinth: Gänge 30 cm breit, Wände 10 cm dick. Ziel oben links. +`,vL=`// Labyrinth: Gänge 30 cm breit, Wände 10 cm dick. Ziel oben links. ........... .Z......... ........... @@ -76847,7 +80222,7 @@ Z.... ........... .........<. ........... -`,xZ=`// Labyrinth: Gänge 30 cm breit, Wände 10 cm dick. Ziel oben rechts. +`,yL=`// Labyrinth: Gänge 30 cm breit, Wände 10 cm dick. Ziel oben rechts. ........... .........Z. ........... @@ -76859,7 +80234,7 @@ Z.... ........... .>......... ........... -`,vZ=`// Linienfolger: Die Linie biegt nach rechts ab und endet vor der Wand. +`,wL=`// Linienfolger: Die Linie biegt nach rechts ab und endet vor der Wand. ######### ......... ......... @@ -76874,7 +80249,7 @@ Z.... ......... ..^...... linie: 2,12 2,8 4,5 4,0.6 -`,yZ=`// Linienfolger: Die Linie biegt nach links ab und endet vor der Wand. +`,zL=`// Linienfolger: Die Linie biegt nach links ab und endet vor der Wand. ######### ......... ......... @@ -76889,7 +80264,7 @@ linie: 2,12 2,8 4,5 4,0.6 ......... ......^.. linie: 6,12 6,8 4,5 4,0.6 -`,wZ=`// Linienfolger mit Stopp: Am Ende der Linie liegt ein rotes Feld. +`,IL=`// Linienfolger mit Stopp: Am Ende der Linie liegt ein rotes Feld. ......... .....r... .....o... @@ -76903,7 +80278,7 @@ linie: 6,12 6,8 4,5 4,0.6 ......... ..^...... linie: 2,11 2,8 5,4 5,1.5 -`,zZ=`// Linienfolger mit Stopp: Die Linie schlängelt sich zum roten Feld. +`,kL=`// Linienfolger mit Stopp: Die Linie schlängelt sich zum roten Feld. ........... ...r....... ...o....... @@ -76919,7 +80294,7 @@ linie: 2,11 2,8 5,4 5,1.5 ........... .......^... linie: 7,13 7,10 5,8 5,7 3,5 3,1.5 -`,IZ=`// Einparken: rechts parken Autos (Klötze), die blaue Markierung zeigt die Lücke. +`,SL=`// Einparken: rechts parken Autos (Klötze), die blaue Markierung zeigt die Lücke. #....#### #....#### #....#### @@ -76932,7 +80307,7 @@ linie: 7,13 7,10 5,8 5,7 3,5 3,1.5 #....#### #....#### #..^.#### -`,kZ=`// Einparken: Die Lücke liegt weiter vorn. +`,TL=`// Einparken: Die Lücke liegt weiter vorn. #....#### #..b....# #.....o.# @@ -76945,14 +80320,33 @@ linie: 7,13 7,10 5,8 5,7 3,5 3,1.5 #....#### #....#### #..^.#### -`,SZ=`// Bis zur Linie: der schwarze Rand ist nah +`,_L=`// Wo ist am meisten Platz? Rechts ist es am weitesten. +........... +.....#..... +........... +........... +.#...^....# +........... +.....#..... +`,jL=`// Wo ist am meisten Platz? Vorn ist es am weitesten. +.....#..... +........... +........... +........... +........... +........... +....#^.#... +........... +........... +.....#..... +`,AL=`// Bis zur Linie: der schwarze Rand ist nah ..... ===== ..... ..... ..^.. ..... -`,TZ=`// Bis zur Linie: der schwarze Rand ist weiter weg +`,CL=`// Bis zur Linie: der schwarze Rand ist weiter weg ..... ===== ..... @@ -76962,17 +80356,17 @@ linie: 7,13 7,10 5,8 5,7 3,5 3,1.5 ..... ..^.. ..... -`,_Z=`// Slalom: ein Zeichen = 30 cm. Vier Pylonen, abwechselnd oben und unten herum, Ziel am Ende. +`,DL=`// Slalom: ein Zeichen = 30 cm. Vier Pylonen, abwechselnd oben und unten herum, Ziel am Ende. raster: 3 ......... >#.#.#.#Z ......... -`,jZ=`// Tunnelsucher (nach Kara): Halt im ersten Feld mit Wand links UND rechts (hellgrün). Ein Zeichen = 30 cm. +`,PL=`// Tunnelsucher (nach Kara): Halt im ersten Feld mit Wand links UND rechts (hellgrün). Ein Zeichen = 30 cm. raster: 3 ..#..###. >....o... ....##### -`,CZ=`// Tunnelsucher, nach oben. Ein Zeichen = 30 cm. +`,BL=`// Tunnelsucher, nach oben. Ein Zeichen = 30 cm. raster: 3 .#.#. .#o#. @@ -76980,12 +80374,12 @@ raster: 3 .#... ..... ..^.. -`,AZ=`// Kleeblatt im Wald (nach Kara): Bäume liegen auf dem Weg zum Ziel, nie zwei nebeneinander. Ein Zeichen = 30 cm. +`,OL=`// Kleeblatt im Wald (nach Kara): Bäume liegen auf dem Weg zum Ziel, nie zwei nebeneinander. Ein Zeichen = 30 cm. raster: 3 .......... >..#.#..#Z .......... -`,PZ=`// Kleeblatt im Wald, nach oben. Ein Zeichen = 30 cm. +`,ML=`// Kleeblatt im Wald, nach oben. Ein Zeichen = 30 cm. raster: 3 .Z. .#. @@ -76994,7 +80388,7 @@ raster: 3 ... ... .^. -`,DZ=`// Wand vorn? Vor dem mBot2 ist viel Platz. +`,ZL=`// Wand vorn? Vor dem mBot2 ist viel Platz. ##### ..... ..... @@ -77004,14 +80398,14 @@ raster: 3 ..... ..^.. ..... -`,BZ=`// Bis zur Wand: kurzer Weg +`,LL=`// Bis zur Wand: kurzer Weg ##### ..... ..Z.. ..... ..... ..^.. -`,OZ=`// Bis zur Wand: langer Weg +`,WL=`// Bis zur Wand: langer Weg ##### ..... ..Z.. @@ -77027,7 +80421,7 @@ raster: 3 ..... ..... ..^.. -`,MZ=`// Bis zur Wand: mittlerer Weg +`,EL=`// Bis zur Wand: mittlerer Weg ##### ..... ..Z.. @@ -77038,26 +80432,26 @@ raster: 3 ..... ..... ..^.. -`,ZZ=`// Wand vorn? Die Wand steht direkt vor dem mBot2. +`,NL=`// Wand vorn? Die Wand steht direkt vor dem mBot2. ##### ..... ..^.. ..... -`,LZ=`// Zwei Sekunden mit halber Kraft: Wo bleibt er stehen? +`,FL=`// Zwei Sekunden mit halber Kraft: Wo bleibt er stehen? ..... ..... ..... ..o.. ..... ..^.. -`,WZ=`// Fahre bis zum Ziel: kurzer Weg, keine Wand +`,RL=`// Fahre bis zum Ziel: kurzer Weg, keine Wand ..... ..Z.. ..... ..... ..^.. ..... -`,EZ=`// Fahre bis zum Ziel: langer Weg, keine Wand +`,JL=`// Fahre bis zum Ziel: langer Weg, keine Wand ..... ..Z.. ..... @@ -77070,50 +80464,50 @@ raster: 3 ..... ..^.. ..... -`,NZ=""+new URL("ada-lovelace-DS_988PF.jpg",import.meta.url).href,FZ=""+new URL("aufgabe-mehrwertsteuer-C-TFTrWz.svg",import.meta.url).href,RZ=""+new URL("ben-shneiderman-Cev5hrqS.jpg",import.meta.url).href,JZ=""+new URL("caesar-ascii-Bix93F5i.svg",import.meta.url).href,GZ=""+new URL("caesar-scheibe-CMRPZI6Y.svg",import.meta.url).href,HZ=""+new URL("caesar-verschiebung-DIR-lDbs.svg",import.meta.url).href,VZ=""+new URL("aufgabe-mehrwertsteuer-CnrZ00ny.svg",import.meta.url).href,qZ=""+new URL("kino-saal-C8zaJk4X.svg",import.meta.url).href,QZ=""+new URL("kino-schleifen-D7sfo9iK.svg",import.meta.url).href,UZ="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgNDkyIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iNDkyIiBmaWxsPSIjZmZmZmZmIi8+CiAgPGcgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiPgogICAgPCEtLSBTdGFydCAtLT4KICAgIDxyZWN0IHg9IjEwMCIgeT0iMTAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMjgiIHJ4PSIxNCIgZmlsbD0iI2QxZjJkOSIvPgogICAgPGxpbmUgeDE9IjE1MCIgeTE9IjM4IiB4Mj0iMTUwIiB5Mj0iNTQiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICAgIDwhLS0gQW53ZWlzdW5nIC0tPgogICAgPHJlY3QgeD0iNTAiIHk9IjU2IiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjMwIiBmaWxsPSIjZTVmMGZmIi8+CiAgICA8bGluZSB4MT0iMTUwIiB5MT0iODYiIHgyPSIxNTAiIHkyPSI5OCIgbWFya2VyLWVuZD0idXJsKCNhKSIvPgogICAgPCEtLSBSYXV0ZSAxIC0tPgogICAgPHBhdGggZD0iTTE1MCAxMDAgTDIzNSAxMjggTDE1MCAxNTYgTDY1IDEyOCBaIiBmaWxsPSIjZmZmNGQ2Ii8+CiAgICA8bGluZSB4MT0iMTUwIiB5MT0iMTU2IiB4Mj0iMTUwIiB5Mj0iMTcyIiBtYXJrZXItZW5kPSJ1cmwoI2EpIi8+CiAgICA8cmVjdCB4PSI1MCIgeT0iMTc0IiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjMwIiBmaWxsPSIjZTVmMGZmIi8+CiAgICA8bGluZSB4MT0iMTUwIiB5MT0iMjA0IiB4Mj0iMTUwIiB5Mj0iMjUwIiBtYXJrZXItZW5kPSJ1cmwoI2EpIi8+CiAgICA8IS0tIG5laW4tV2VnIHVtIGRlbiBLYXN0ZW4gaGVydW0gLS0+CiAgICA8cG9seWxpbmUgcG9pbnRzPSIyMzUsMTI4IDI4NSwxMjggMjg1LDIyMiAxNTAsMjIyIiBmaWxsPSJub25lIiBtYXJrZXItZW5kPSJ1cmwoI2EpIi8+CiAgICA8IS0tIFJhdXRlIDIgLS0+CiAgICA8cGF0aCBkPSJNMTUwIDI1MiBMMjM1IDI4MCBMMTUwIDMwOCBMNjUgMjgwIFoiIGZpbGw9IiNmZmY0ZDYiLz4KICAgIDxsaW5lIHgxPSIyMzUiIHkxPSIyODAiIHgyPSIyNjgiIHkyPSIyODAiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICAgIDxyZWN0IHg9IjI3MCIgeT0iMjY1IiB3aWR0aD0iMTE1IiBoZWlnaHQ9IjMwIiBmaWxsPSIjZTVmMGZmIi8+CiAgICA8IS0tIHp1csO8Y2sgenVyIFByw7xmdW5nIC0tPgogICAgPHBvbHlsaW5lIHBvaW50cz0iMzI3LDI2NSAzMjcsMjM4IDE1MCwyMzgiIGZpbGw9Im5vbmUiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICAgIDxsaW5lIHgxPSIxNTAiIHkxPSIzMDgiIHgyPSIxNTAiIHkyPSIzMjYiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICAgIDxyZWN0IHg9IjUwIiB5PSIzMjgiIHdpZHRoPSIyMDAiIGhlaWdodD0iMzAiIGZpbGw9IiNlNWYwZmYiLz4KICAgIDxsaW5lIHgxPSIxNTAiIHkxPSIzNTgiIHgyPSIxNTAiIHkyPSIzNzQiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICAgIDwhLS0gRW5kZSAtLT4KICAgIDxyZWN0IHg9IjEwMCIgeT0iMzc2IiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjI4IiByeD0iMTQiIGZpbGw9IiNkMWYyZDkiLz4KICA8L2c+CiAgPGcgdGV4dC1hbmNob3I9Im1pZGRsZSI+CiAgICA8dGV4dCB4PSIxNTAiIHk9IjI5Ij5TdGFydDwvdGV4dD4KICAgIDx0ZXh0IHg9IjE1MCIgeT0iNzYiPlB1dCBhIGN1cCBvbiB0aGUgdGFibGU8L3RleHQ+CiAgICA8dGV4dCB4PSIxNTAiIHk9IjEzMyI+U3VnYXIgd2FudGVkPzwvdGV4dD4KICAgIDx0ZXh0IHg9IjE1MCIgeT0iMTk0Ij5BZGQgc3VnYXI8L3RleHQ+CiAgICA8dGV4dCB4PSIxNTAiIHk9IjI4NSI+VGVhIHN0aWxsIHRvbyBob3Q/PC90ZXh0PgogICAgPHRleHQgeD0iMzI3LjUiIHk9IjI4NSI+V2FpdCAxIG1pbnV0ZTwvdGV4dD4KICAgIDx0ZXh0IHg9IjE1MCIgeT0iMzQ4Ij5EcmluayB0aGUgdGVhPC90ZXh0PgogICAgPHRleHQgeD0iMTUwIiB5PSIzOTUiPkVuZDwvdGV4dD4KICA8L2c+CiAgPGcgZm9udC1zaXplPSIxMiIgZm9udC13ZWlnaHQ9IjYwMCI+CiAgICA8dGV4dCB4PSIxNTYiIHk9IjE2OCIgZmlsbD0iIzI0OGEzZCI+eWVzPC90ZXh0PgogICAgPHRleHQgeD0iMjQyIiB5PSIxMjIiIGZpbGw9IiNkNzAwMTUiPm5vPC90ZXh0PgogICAgPHRleHQgeD0iMjQwIiB5PSIyNzQiIGZpbGw9IiMyNDhhM2QiPnllczwvdGV4dD4KICAgIDx0ZXh0IHg9IjE1NiIgeT0iMzIwIiBmaWxsPSIjZDcwMDE1Ij5ubzwvdGV4dD4KICA8L2c+CiAgPCEtLSBMZWdlbmRlIC0tPgogIDxsaW5lIHgxPSIxMCIgeTE9IjQxOCIgeDI9IjM5MCIgeTI9IjQxOCIgc3Ryb2tlPSIjZDFkMWQ2Ii8+CiAgPGcgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjEuNSI+CiAgICA8cmVjdCB4PSI0MCIgeT0iNDMwIiB3aWR0aD0iMzYiIGhlaWdodD0iMTgiIHJ4PSI5IiBmaWxsPSIjZDFmMmQ5Ii8+CiAgICA8cmVjdCB4PSIyMjAiIHk9IjQzMCIgd2lkdGg9IjM2IiBoZWlnaHQ9IjE4IiBmaWxsPSIjZTVmMGZmIi8+CiAgICA8cGF0aCBkPSJNNTggNDU4IEw3NiA0NjkgTDU4IDQ4MCBMNDAgNDY5IFoiIGZpbGw9IiNmZmY0ZDYiLz4KICAgIDxwYXRoIGQ9Ik0yMjYgNDYwIEwyNTYgNDYwIEwyNTAgNDc4IEwyMjAgNDc4IFoiIGZpbGw9IiNmMmU2ZmYiLz4KICA8L2c+CiAgPGcgZm9udC1zaXplPSIxMiIgZmlsbD0iIzNhM2EzYyI+CiAgICA8dGV4dCB4PSI4NiIgeT0iNDQzIj5TdGFydCBvciBlbmQ8L3RleHQ+CiAgICA8dGV4dCB4PSIyNjYiIHk9IjQ0MyI+U3RhdGVtZW50PC90ZXh0PgogICAgPHRleHQgeD0iODYiIHk9IjQ3MyI+RGVjaXNpb248L3RleHQ+CiAgICA8dGV4dCB4PSIyNjYiIHk9IjQ3MyI+SW5wdXQgb3Igb3V0cHV0PC90ZXh0PgogIDwvZz4KPC9zdmc+Cg==",YZ="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMTkwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8cmVjdCB3aWR0aD0iNDAwIiBoZWlnaHQ9IjE5MCIgZmlsbD0iI2ZmZmZmZiIvPgogIDx0ZXh0IHg9IjIwIiB5PSIyNCIgZm9udC13ZWlnaHQ9IjYwMCI+V2hlcmUgZG9lcyB0aGUgZWxlbWVudCBsYW5kPzwvdGV4dD4KICA8cmVjdCB4PSIyMCIgeT0iNDAiIHdpZHRoPSIxOTAiIGhlaWdodD0iMzUiIGZpbGw9IiNkYmVhZmUiLz4KICA8cmVjdCB4PSIyMCIgeT0iNzUiIHdpZHRoPSIxOTAiIGhlaWdodD0iMzUiIGZpbGw9IiNkY2ZjZTciLz4KICA8bGluZSB4MT0iMjAiIHkxPSI3NSIgeDI9IjIxMCIgeTI9Ijc1IiBzdHJva2U9IiM2ZTZlNzMiIHN0cm9rZS1kYXNoYXJyYXk9IjQgMyIvPgogIDxyZWN0IHg9IjIwIiB5PSI0MCIgd2lkdGg9IjE5MCIgaGVpZ2h0PSI3MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8dGV4dCB4PSIxMTUiIHk9IjYyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjMWQ0ZWQ4Ij50b3AgaGFsZjwvdGV4dD4KICA8dGV4dCB4PSIxMTUiIHk9Ijk3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjMTU4MDNkIj5ib3R0b20gaGFsZjwvdGV4dD4KICA8dGV4dCB4PSIyMjQiIHk9IjYyIj7ihpIgZ29lcyA8dHNwYW4gZm9udC13ZWlnaHQ9IjYwMCI+aW4gZnJvbnQ8L3RzcGFuPjwvdGV4dD4KICA8dGV4dCB4PSIyMjQiIHk9Ijk3Ij7ihpIgZ29lcyA8dHNwYW4gZm9udC13ZWlnaHQ9IjYwMCI+YWZ0ZXI8L3RzcGFuPjwvdGV4dD4KICA8cmVjdCB4PSIyMCIgeT0iMTMyIiB3aWR0aD0iMTkwIiBoZWlnaHQ9IjQwIiBmaWxsPSIjZmVmM2M3IiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjExNSIgeT0iMTU3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE2Ij7DuDwvdGV4dD4KICA8dGV4dCB4PSIyMjQiIHk9IjE1NyI+4oaSIDx0c3BhbiBmb250LXdlaWdodD0iNjAwIj5yZXBsYWNlczwvdHNwYW4+IGl0PC90ZXh0Pgo8L3N2Zz4K",$Z=""+new URL("l03-lochkarte-beschriftet-BjBFZjzb.svg",import.meta.url).href,KZ=""+new URL("l03-lochkarte-BB3rWQOm.svg",import.meta.url).href,XZ="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NjAgMjkwIiBmb250LWZhbWlseT0idWktbW9ub3NwYWNlLCBNZW5sbywgQ29uc29sYXMsIG1vbm9zcGFjZSI+CjxyZWN0IHdpZHRoPSI0NjAiIGhlaWdodD0iMjkwIiBmaWxsPSIjZmZmZmZmIi8+Cjx0ZXh0IHg9IjUwIiB5PSI0NCIgZm9udC1zaXplPSI0MCIgZmlsbD0iIzZlNmU3MyIgdGV4dExlbmd0aD0iMjg4IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmdBbmRHbHlwaHMiPnByaWNlPHRzcGFuIGZpbGw9IiMwMDdhZmYiIGZvbnQtd2VpZ2h0PSI3MDAiPlc8L3RzcGFuPml0aDx0c3BhbiBmaWxsPSIjMDA3YWZmIiBmb250LXdlaWdodD0iNzAwIj5UPC90c3Bhbj5heDwvdGV4dD4KPGxpbmUgeDE9IjE4MiIgeTE9IjU0IiB4Mj0iMTgyIiB5Mj0iODIiIHN0cm9rZT0iIzAwN2FmZiIgc3Ryb2tlLXdpZHRoPSIyLjUiIHN0cm9rZS1kYXNoYXJyYXk9IjUgNCIvPgo8bGluZSB4MT0iMjc4IiB5MT0iNTQiIHgyPSIyNzgiIHkyPSI4MiIgc3Ryb2tlPSIjMDA3YWZmIiBzdHJva2Utd2lkdGg9IjIuNSIgc3Ryb2tlLWRhc2hhcnJheT0iNSA0Ii8+CjxwYXRoIGQ9Ik0yMCAyNzIgSDQ0MCIgc3Ryb2tlPSIjZTVkM2IwIiBzdHJva2Utd2lkdGg9IjQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTU2IDE3MiBMMTUwIDIyNiIgc3Ryb2tlPSIjYjg4YTUyIiBzdHJva2Utd2lkdGg9IjEzIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPHBhdGggZD0iTTE1MCAyMjYgTDE1NiAyNjIiIHN0cm9rZT0iI2I4OGE1MiIgc3Ryb2tlLXdpZHRoPSI4IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPGNpcmNsZSBjeD0iMTUwIiBjeT0iMjI2IiByPSI2IiBmaWxsPSIjN2E1NTMwIiBvcGFjaXR5PSIwLjU1Ii8+CjxlbGxpcHNlIGN4PSIxNjEiIGN5PSIyNjciIHJ4PSIxMSIgcnk9IjUiIGZpbGw9IiM3YTU1MzAiLz4KPHBhdGggZD0iTTMyOCAxNzIgTDMzMiAyMjYiIHN0cm9rZT0iI2I4OGE1MiIgc3Ryb2tlLXdpZHRoPSIxMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjxwYXRoIGQ9Ik0zMzIgMjI2IEwzMjggMjYyIiBzdHJva2U9IiNiODhhNTIiIHN0cm9rZS13aWR0aD0iOCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjxjaXJjbGUgY3g9IjMzMiIgY3k9IjIyNiIgcj0iNiIgZmlsbD0iIzdhNTUzMCIgb3BhY2l0eT0iMC41NSIvPgo8ZWxsaXBzZSBjeD0iMzMzIiBjeT0iMjY3IiByeD0iMTEiIHJ5PSI1IiBmaWxsPSIjN2E1NTMwIi8+CjxwYXRoIGQ9Ik0xMjAgMTQwIEMxMDQgMTUwIDEwNCAxNzYgMTEwIDE5NiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYjg4YTUyIiBzdHJva2Utd2lkdGg9IjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8ZWxsaXBzZSBjeD0iMTEwIiBjeT0iMjAwIiByeD0iNSIgcnk9IjkiIGZpbGw9IiM3YTU1MzAiLz4KPHBhdGggZD0iTTEyMCAxNzIgQzEwOCAxNTIgMTE0IDEyOCAxMzQgMTIyIEMxNDggMTIwIDE1NCA4NCAxODIgODQgQzIxMCA4NCAyMDggMTI2IDIzMCAxMjQgQzI1MiAxMjYgMjUwIDg0IDI3OCA4NCBDMzA2IDg0IDMwOCAxMjIgMzE4IDEyOCBDMzQwIDEzMiAzNDggMTU4IDM2NCAxNTggQzM3NiAxNTggMzc4IDEyNCAzODIgMTEwIEMzODYgOTggNDAwIDk2IDQxMiA5OSBDNDI0IDEwMiA0MzAgMTA4IDQyOCAxMTYgQzQyNiAxMjMgNDE0IDEyNCA0MDQgMTIyIEMzOTYgMTIyIDM5NCAxMjggMzk0IDEzNiBDMzk0IDE2MiAzODggMTg0IDM2NiAxODYgQzM1MCAxODggMzQwIDE4MiAzMzAgMTc4IEMyNjAgMTg4IDIwMCAxODggMTQwIDE4MiBDMTMwIDE4MCAxMjQgMTc3IDEyMCAxNzIgWiIgZmlsbD0iI2QyYTU2YSIgc3Ryb2tlPSIjN2E1NTMwIiBzdHJva2Utd2lkdGg9IjIuNSIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTM0IDE3MiBMMTI4IDIyNiIgc3Ryb2tlPSIjZDJhNTZhIiBzdHJva2Utd2lkdGg9IjEzIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPHBhdGggZD0iTTEyOCAyMjYgTDEzNCAyNjIiIHN0cm9rZT0iI2QyYTU2YSIgc3Ryb2tlLXdpZHRoPSI4IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPGNpcmNsZSBjeD0iMTI4IiBjeT0iMjI2IiByPSI2IiBmaWxsPSIjN2E1NTMwIiBvcGFjaXR5PSIwLjU1Ii8+CjxlbGxpcHNlIGN4PSIxMzkiIGN5PSIyNjciIHJ4PSIxMSIgcnk9IjUiIGZpbGw9IiM3YTU1MzAiLz4KPHBhdGggZD0iTTMwOCAxNzIgTDMxMiAyMjYiIHN0cm9rZT0iI2QyYTU2YSIgc3Ryb2tlLXdpZHRoPSIxMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjxwYXRoIGQ9Ik0zMTIgMjI2IEwzMDggMjYyIiBzdHJva2U9IiNkMmE1NmEiIHN0cm9rZS13aWR0aD0iOCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjxjaXJjbGUgY3g9IjMxMiIgY3k9IjIyNiIgcj0iNiIgZmlsbD0iIzdhNTUzMCIgb3BhY2l0eT0iMC41NSIvPgo8ZWxsaXBzZSBjeD0iMzEzIiBjeT0iMjY3IiByeD0iMTEiIHJ5PSI1IiBmaWxsPSIjN2E1NTMwIi8+CjxwYXRoIGQ9Ik0zOTAgMTAzIEwzODYgOTIgTDM5OCAxMDAgWiIgZmlsbD0iI2QyYTU2YSIgc3Ryb2tlPSIjN2E1NTMwIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPGNpcmNsZSBjeD0iNDA2IiBjeT0iMTA3IiByPSIzLjIiIGZpbGw9IiMxYzFjMWUiLz4KPHBhdGggZD0iTTQwMSAxMDQgUTQwNiAxMDEgNDExIDEwNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjN2E1NTMwIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8cGF0aCBkPSJNNDIyIDEwNyBxNCAxIDUgNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjN2E1NTMwIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8cGF0aCBkPSJNNDE2IDExOSBRNDIyIDExOCA0MjcgMTE3IiBmaWxsPSJub25lIiBzdHJva2U9IiM3YTU1MzAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+Cjwvc3ZnPgo=",eL="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjEwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8cmVjdCB3aWR0aD0iNDAwIiBoZWlnaHQ9IjIxMCIgZmlsbD0iI2ZmZmZmZiIvPgogIDx0ZXh0IHg9IjIwMCIgeT0iMjQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtZmFtaWx5PSJ1aS1tb25vc3BhY2UsIE1lbmxvLCBDb25zb2xhcywgbW9ub3NwYWNlIiBmb250LXNpemU9IjE2Ij5pbnQgYWdlID0gMTQ8L3RleHQ+CiAgPHBhdGggZD0iTTEzMCA3MCBMMTcwIDUwIEwzMDAgNTAgTDI2MCA3MCBaIiBmaWxsPSIjYzk4YTNjIiBzdHJva2U9IiM4YTVhMWYiIHN0cm9rZS13aWR0aD0iMiIvPgogIDxyZWN0IHg9IjE4MCIgeT0iMzQiIHdpZHRoPSI0NCIgaGVpZ2h0PSI1MCIgcng9IjMiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KICA8dGV4dCB4PSIyMDIiIHk9IjYwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjIwIiBmb250LXdlaWdodD0iNzAwIj4xNDwvdGV4dD4KICA8cmVjdCB4PSIxMzAiIHk9IjcwIiB3aWR0aD0iMTMwIiBoZWlnaHQ9IjEwMCIgZmlsbD0iI2U5Yjg3MiIgc3Ryb2tlPSIjOGE1YTFmIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8cGF0aCBkPSJNMjYwIDcwIEwzMDAgNTAgTDMwMCAxNTAgTDI2MCAxNzAgWiIgZmlsbD0iI2Q0OWE0YyIgc3Ryb2tlPSIjOGE1YTFmIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8cmVjdCB4PSIxNTAiIHk9IjEwMCIgd2lkdGg9IjkwIiBoZWlnaHQ9IjMwIiByeD0iNCIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjOGE1YTFmIi8+CiAgPHRleHQgeD0iMTk1IiB5PSIxMjAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSI2MDAiPmFnZTwvdGV4dD4KICA8cmVjdCB4PSIxMzgiIHk9IjE0MiIgd2lkdGg9IjM0IiBoZWlnaHQ9IjIwIiByeD0iMTAiIGZpbGw9IiMwMDdhZmYiLz4KICA8dGV4dCB4PSIxNTUiIHk9IjE1NiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMiIgZmlsbD0iI2ZmZmZmZiIgZm9udC13ZWlnaHQ9IjYwMCI+aW50PC90ZXh0PgogIDxnIHN0cm9rZT0iIzZlNmU3MyI+CiAgICA8bGluZSB4MT0iMzEwIiB5MT0iNDgiIHgyPSIyMjYiIHkyPSI1MiIvPgogICAgPGxpbmUgeDE9IjMxMCIgeTE9IjExNSIgeDI9IjI0MiIgeTI9IjExNSIvPgogICAgPGxpbmUgeDE9IjgwIiB5MT0iMTUyIiB4Mj0iMTM0IiB5Mj0iMTUyIi8+CiAgPC9nPgogIDx0ZXh0IHg9IjMxNiIgeT0iNTIiPlZhbHVlPC90ZXh0PgogIDx0ZXh0IHg9IjMxNiIgeT0iMTE5Ij5OYW1lPC90ZXh0PgogIDx0ZXh0IHg9IjgiIHk9IjE1NiI+RGF0YSB0eXBlPC90ZXh0PgogIDx0ZXh0IHg9IjIwMCIgeT0iMTk4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj5UaGUgbmFtZSBnZXRzIHlvdSB0byB0aGUgdmFsdWUuPC90ZXh0Pgo8L3N2Zz4K",tL="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjAwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMDA3YWZmIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMjAwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPGcgZm9udC1mYW1pbHk9InVpLW1vbm9zcGFjZSwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2UiIGZvbnQtc2l6ZT0iMjAiPgogICAgPHRleHQgeD0iNjAiIHk9IjExMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjcwMCI+cG9pbnRzPC90ZXh0PgogICAgPHRleHQgeD0iMTI1IiB5PSIxMTAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMwMDdhZmYiIGZvbnQtd2VpZ2h0PSI3MDAiPj08L3RleHQ+CiAgICA8dGV4dCB4PSIyNjAiIHk9IjExMCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+cG9pbnRzICsgNTwvdGV4dD4KICA8L2c+CiAgPHJlY3QgeD0iMTgwIiB5PSI4NiIgd2lkdGg9IjE2MCIgaGVpZ2h0PSIzNCIgcng9IjYiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzE1ODAzZCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjYwIiB5PSIxNDgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMxNTgwM2QiPuKRoCB3b3JrIG91dCB0aGUgcmlnaHQ6IDEwICsgNSA9IDE1PC90ZXh0PgogIDxwYXRoIGQ9Ik0yNTAgODIgQzIzMCAzMCwgOTAgMzAsIDY0IDg0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDdhZmYiIHN0cm9rZS13aWR0aD0iMi41IiBtYXJrZXItZW5kPSJ1cmwoI2EpIi8+CiAgPHRleHQgeD0iMTYwIiB5PSIzNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzAwN2FmZiI+4pGhIHN0b3JlIHRoZSByZXN1bHQgb24gdGhlIGxlZnQ8L3RleHQ+CiAgPHJlY3QgeD0iMjAiIHk9IjE2NCIgd2lkdGg9IjM2MCIgaGVpZ2h0PSIyNiIgcng9IjYiIGZpbGw9IiNmMmYyZjciLz4KICA8dGV4dCB4PSIyMDAiIHk9IjE4MiIgdGV4dC1hbmNob3I9Im1pZGRsZSI+cG9pbnRzIGJlZm9yZTogPHRzcGFuIGZvbnQtd2VpZ2h0PSI3MDAiPjEwPC90c3Bhbj4gICDihpIgICBwb2ludHMgYWZ0ZXI6IDx0c3BhbiBmb250LXdlaWdodD0iNzAwIj4xNTwvdHNwYW4+PC90ZXh0Pgo8L3N2Zz4K",nL="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjYwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMjYwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPGcgc3Ryb2tlPSIjNmU2ZTczIiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9Im5vbmUiPgogICAgPHBhdGggZD0iTTQwIDExMCBMNDggMTgwIEwxMDIgMTgwIEwxMTAgMTEwIi8+CiAgICA8cGF0aCBkPSJNMTY1IDExMCBMMTczIDE4MCBMMjI3IDE4MCBMMjM1IDExMCIvPgogICAgPHBhdGggZD0iTTI5MCAxMTAgTDI5OCAxODAgTDM1MiAxODAgTDM2MCAxMTAiLz4KICA8L2c+CiAgPHBhdGggZD0iTTQ0IDEzNSBMNDggMTgwIEwxMDIgMTgwIEwxMDYgMTM1IFoiIGZpbGw9IiNmZGJhNzQiLz4KICA8cGF0aCBkPSJNMjk0IDEzNSBMMjk4IDE4MCBMMzUyIDE4MCBMMzU2IDEzNSBaIiBmaWxsPSIjOTNjNWZkIi8+CiAgPHRleHQgeD0iNzUiIHk9IjIwMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+bGVmdDwvdGV4dD4KICA8dGV4dCB4PSI3NSIgeT0iMjE3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj5qdWljZTwvdGV4dD4KICA8dGV4dCB4PSIyMDAiIHk9IjIwMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+dGVtcDwvdGV4dD4KICA8dGV4dCB4PSIyMDAiIHk9IjIxNyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzZlNmU3MyI+ZW1wdHk8L3RleHQ+CiAgPHRleHQgeD0iMzI1IiB5PSIyMDAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSI2MDAiPnJpZ2h0PC90ZXh0PgogIDx0ZXh0IHg9IjMyNSIgeT0iMjE3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj53YXRlcjwvdGV4dD4KICA8ZyBmaWxsPSJub25lIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI2EpIj4KICAgIDxwYXRoIGQ9Ik04OCAxMDQgQzExMCA3MCwgMTYwIDcwLCAxODYgMTA0Ii8+CiAgICA8cGF0aCBkPSJNMzE4IDEwNCBDMjcwIDE1LCAxMzAgMTUsIDgyIDEwNCIvPgogICAgPHBhdGggZD0iTTIxNCAxMDQgQzI0MCA3MCwgMjkwIDcwLCAzMTIgMTA0Ii8+CiAgPC9nPgogIDxnIGZvbnQtd2VpZ2h0PSI3MDAiIHRleHQtYW5jaG9yPSJtaWRkbGUiPgogICAgPGNpcmNsZSBjeD0iMTM3IiBjeT0iODAiIHI9IjExIiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMxYzFjMWUiLz48dGV4dCB4PSIxMzciIHk9Ijg1Ij4xPC90ZXh0PgogICAgPGNpcmNsZSBjeD0iMjAwIiBjeT0iMzgiIHI9IjExIiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMxYzFjMWUiLz48dGV4dCB4PSIyMDAiIHk9IjQzIj4yPC90ZXh0PgogICAgPGNpcmNsZSBjeD0iMjYzIiBjeT0iODAiIHI9IjExIiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMxYzFjMWUiLz48dGV4dCB4PSIyNjMiIHk9Ijg1Ij4zPC90ZXh0PgogIDwvZz4KICA8ZyB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LWZhbWlseT0idWktbW9ub3NwYWNlLCBNZW5sbywgQ29uc29sYXMsIG1vbm9zcGFjZSIgZm9udC1zaXplPSIxMiI+CiAgICA8dGV4dCB4PSI3MCIgeT0iMjQ3Ij4xOiB0ZW1wID0gbGVmdDwvdGV4dD4KICAgIDx0ZXh0IHg9IjIwMCIgeT0iMjQ3Ij4yOiBsZWZ0ID0gcmlnaHQ8L3RleHQ+CiAgICA8dGV4dCB4PSIzMzAiIHk9IjI0NyI+MzogcmlnaHQgPSB0ZW1wPC90ZXh0PgogIDwvZz4KPC9zdmc+Cg==",iL="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMTUwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8cmVjdCB3aWR0aD0iNDAwIiBoZWlnaHQ9IjE1MCIgZmlsbD0iI2ZmZmZmZiIvPgogIDxyZWN0IHg9IjIwIiB5PSI1MCIgd2lkdGg9IjcwIiBoZWlnaHQ9IjI0IiBmaWxsPSIjZmVlMmUyIi8+PHJlY3QgeD0iMzEwIiB5PSI1MCIgd2lkdGg9IjcwIiBoZWlnaHQ9IjI0IiBmaWxsPSIjZmVlMmUyIi8+CiAgPHJlY3QgeD0iOTAiIHk9IjUwIiB3aWR0aD0iMjIwIiBoZWlnaHQ9IjI0IiBmaWxsPSIjZGNmY2U3Ii8+CiAgPGxpbmUgeDE9IjIwIiB5MT0iNzQiIHgyPSIzODAiIHkyPSI3NCIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8bGluZSB4MT0iNDYiIHkxPSI2OCIgeDI9IjQ2IiB5Mj0iODAiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIyIi8+PHRleHQgeD0iNDYiIHk9Ijk4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj4wPC90ZXh0PgogIDxsaW5lIHgxPSI5MCIgeTE9IjY4IiB4Mj0iOTAiIHkyPSI4MCIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz48dGV4dCB4PSI5MCIgeT0iOTgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPjE8L3RleHQ+CiAgPGxpbmUgeDE9IjEzNCIgeTE9IjY4IiB4Mj0iMTM0IiB5Mj0iODAiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIyIi8+PHRleHQgeD0iMTM0IiB5PSI5OCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+MjwvdGV4dD4KICA8bGluZSB4MT0iMTc4IiB5MT0iNjgiIHgyPSIxNzgiIHkyPSI4MCIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz48dGV4dCB4PSIxNzgiIHk9Ijk4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj4zPC90ZXh0PgogIDxsaW5lIHgxPSIyMjIiIHkxPSI2OCIgeDI9IjIyMiIgeTI9IjgwIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMiIvPjx0ZXh0IHg9IjIyMiIgeT0iOTgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPjQ8L3RleHQ+CiAgPGxpbmUgeDE9IjI2NiIgeTE9IjY4IiB4Mj0iMjY2IiB5Mj0iODAiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIyIi8+PHRleHQgeD0iMjY2IiB5PSI5OCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+NTwvdGV4dD4KICA8bGluZSB4MT0iMzEwIiB5MT0iNjgiIHgyPSIzMTAiIHkyPSI4MCIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz48dGV4dCB4PSIzMTAiIHk9Ijk4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj42PC90ZXh0PgogIDxsaW5lIHgxPSIzNTQiIHkxPSI2OCIgeDI9IjM1NCIgeTI9IjgwIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMiIvPjx0ZXh0IHg9IjM1NCIgeT0iOTgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPjc8L3RleHQ+CiAgPGNpcmNsZSBjeD0iOTAiIGN5PSI3NCIgcj0iNiIgZmlsbD0iIzE1ODAzZCIvPjxjaXJjbGUgY3g9IjMxMCIgY3k9Ijc0IiByPSI2IiBmaWxsPSIjMTU4MDNkIi8+CiAgPHRleHQgeD0iMjAwIiB5PSI0MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzE1ODAzZCIgZm9udC13ZWlnaHQ9IjYwMCI+dmFsaWQ8L3RleHQ+CiAgPHRleHQgeD0iNDAiIHk9IjQwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjYjkxYzFjIiBmb250LXdlaWdodD0iNjAwIj5pbnZhbGlkPC90ZXh0Pjx0ZXh0IHg9IjM2MCIgeT0iNDAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiNiOTFjMWMiIGZvbnQtd2VpZ2h0PSI2MDAiPmludmFsaWQ8L3RleHQ+CiAgPGcgZm9udC1mYW1pbHk9InVpLW1vbm9zcGFjZSwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2UiIGZvbnQtc2l6ZT0iMTMiIHRleHQtYW5jaG9yPSJtaWRkbGUiPgogICAgPHRleHQgeD0iMjAwIiB5PSIxMjQiIGZpbGw9IiMxNTgwM2QiPmdyYWRlICZndDs9IDEgJmFtcDsmYW1wOyBncmFkZSAmbHQ7PSA2PC90ZXh0PgogICAgPHRleHQgeD0iMjAwIiB5PSIxNDIiIGZpbGw9IiNiOTFjMWMiPmdyYWRlICZsdDsgMSB8fCBncmFkZSAmZ3Q7IDY8L3RleHQ+CiAgPC9nPgo8L3N2Zz4K",aL="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjMwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMjMwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHRleHQgeD0iMjAiIHk9IjI0IiBmb250LXdlaWdodD0iNjAwIj5Ib3cgdGhlIHdoaWxlIGxvb3AgcnVuczwvdGV4dD4KICA8cmVjdCB4PSIxMjAiIHk9IjQ0IiB3aWR0aD0iMTYwIiBoZWlnaHQ9IjQwIiByeD0iMjAiIGZpbGw9IiNmZWYzYzciIHN0cm9rZT0iI2I0NTMwOSIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjAwIiB5PSI2OSIgdGV4dC1hbmNob3I9Im1pZGRsZSI+4pGgIGNoZWNrIHRoZSBjb25kaXRpb248L3RleHQ+CiAgPHJlY3QgeD0iMTIwIiB5PSIxMjgiIHdpZHRoPSIxNjAiIGhlaWdodD0iNDAiIHJ4PSI2IiBmaWxsPSIjZGJlYWZlIiBzdHJva2U9IiMxZDRlZDgiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjIwMCIgeT0iMTUzIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj7ikaEgcnVuIHRoZSBpbnNpZGU8L3RleHQ+CiAgPGcgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNhKSI+CiAgICA8bGluZSB4MT0iMjAwIiB5MT0iODQiIHgyPSIyMDAiIHkyPSIxMjYiLz4KICAgIDxwYXRoIGQ9Ik0xMjAgMTQ4IEM4MCAxNDgsIDgwIDY0LCAxMTggNjQiLz4KICAgIDxwYXRoIGQ9Ik0yODAgNjQgTDM0MCA2NCBMMzQwIDIwMCBMMjgyIDIwMCIvPgogIDwvZz4KICA8dGV4dCB4PSIyMDgiIHk9IjExMCIgZmlsbD0iIzE1ODAzZCIgZm9udC13ZWlnaHQ9IjYwMCI+dHJ1ZTwvdGV4dD4KICA8dGV4dCB4PSIzOCIgeT0iMTEwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj5iYWNrPC90ZXh0PgogIDx0ZXh0IHg9IjM4IiB5PSIxMjYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiM2ZTZlNzMiPnRvIHRoZSB0b3A8L3RleHQ+CiAgPHRleHQgeD0iMzQ4IiB5PSIxMzQiIGZpbGw9IiNiOTFjMWMiIGZvbnQtd2VpZ2h0PSI2MDAiPmZhbHNlPC90ZXh0PgogIDx0ZXh0IHg9IjI3NiIgeT0iMjA1IiB0ZXh0LWFuY2hvcj0iZW5kIj5jb250aW51ZSBiZWxvdyB0aGUgbG9vcDwvdGV4dD4KPC9zdmc+Cg==",sL="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjMwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMjMwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHRleHQgeD0iMTAwIiB5PSIyMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+cHJlLXRlc3QgKHdoaWxlKTwvdGV4dD4KICA8dGV4dCB4PSIzMDAiIHk9IjIyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iNjAwIj5wb3N0LXRlc3QgKGRvLXdoaWxlKTwvdGV4dD4KICA8bGluZSB4MT0iMjAwIiB5MT0iMTAiIHgyPSIyMDAiIHkyPSIyMjAiIHN0cm9rZT0iI2QxZDFkNiIvPgogIDxyZWN0IHg9IjM1IiB5PSI0NCIgd2lkdGg9IjEzMCIgaGVpZ2h0PSIzNiIgcng9IjE4IiBmaWxsPSIjZmVmM2M3IiBzdHJva2U9IiNiNDUzMDkiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjEwMCIgeT0iNjciIHRleHQtYW5jaG9yPSJtaWRkbGUiPuKRoCBjb25kaXRpb248L3RleHQ+CiAgPHJlY3QgeD0iMzUiIHk9IjEyNCIgd2lkdGg9IjEzMCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNkYmVhZmUiIHN0cm9rZT0iIzFkNGVkOCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMTAwIiB5PSIxNDciIHRleHQtYW5jaG9yPSJtaWRkbGUiPuKRoSBpbnNpZGU8L3RleHQ+CiAgPHJlY3QgeD0iMjM1IiB5PSI0NCIgd2lkdGg9IjEzMCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNkYmVhZmUiIHN0cm9rZT0iIzFkNGVkOCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMzAwIiB5PSI2NyIgdGV4dC1hbmNob3I9Im1pZGRsZSI+4pGgIGluc2lkZTwvdGV4dD4KICA8cmVjdCB4PSIyMzUiIHk9IjEyNCIgd2lkdGg9IjEzMCIgaGVpZ2h0PSIzNiIgcng9IjE4IiBmaWxsPSIjZmVmM2M3IiBzdHJva2U9IiNiNDUzMDkiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjMwMCIgeT0iMTQ3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj7ikaEgY29uZGl0aW9uPC90ZXh0PgogIDxnIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIxLjYiIG1hcmtlci1lbmQ9InVybCgjYSkiPgogICAgPGxpbmUgeDE9IjEwMCIgeTE9IjgwIiB4Mj0iMTAwIiB5Mj0iMTIyIi8+CiAgICA8cGF0aCBkPSJNMzUgMTQyIEM4IDE0MiwgOCA2MiwgMzMgNjIiLz4KICAgIDxsaW5lIHgxPSIzMDAiIHkxPSI4MCIgeDI9IjMwMCIgeTI9IjEyMiIvPgogICAgPHBhdGggZD0iTTM2NSAxNDIgQzM5MiAxNDIsIDM5MiA2MiwgMzY3IDYyIi8+CiAgPC9nPgogIDx0ZXh0IHg9IjEwNiIgeT0iMTA2IiBmaWxsPSIjMTU4MDNkIiBmb250LXdlaWdodD0iNjAwIj50cnVlPC90ZXh0PgogIDx0ZXh0IHg9IjM4MCIgeT0iMTA2IiB0ZXh0LWFuY2hvcj0iZW5kIiBmaWxsPSIjMTU4MDNkIiBmb250LXdlaWdodD0iNjAwIj50cnVlPC90ZXh0PgogIDx0ZXh0IHg9IjEwMCIgeT0iMTkwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj5JZiB0aGUgY29uZGl0aW9uIGlzIGZhbHNlIGF0IG9uY2UsPC90ZXh0PgogIDx0ZXh0IHg9IjEwMCIgeT0iMjA2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj50aGUgaW5zaWRlIHJ1bnMgPHRzcGFuIGZvbnQtd2VpZ2h0PSI3MDAiIGZpbGw9IiMxYzFjMWUiPm5ldmVyPC90c3Bhbj4uPC90ZXh0PgogIDx0ZXh0IHg9IjMwMCIgeT0iMTkwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj5UaGUgaW5zaWRlIGFsd2F5cyBydW5zPC90ZXh0PgogIDx0ZXh0IHg9IjMwMCIgeT0iMjA2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj48dHNwYW4gZm9udC13ZWlnaHQ9IjcwMCIgZmlsbD0iIzFjMWMxZSI+YXQgbGVhc3Qgb25jZTwvdHNwYW4+LjwvdGV4dD4KPC9zdmc+Cg==",rL="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjUwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMjUwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHJlY3QgeD0iMTIwIiB5PSIxNCIgd2lkdGg9IjE2MCIgaGVpZ2h0PSIzNCIgcng9IjYiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjAwIiB5PSIzNiIgdGV4dC1hbmNob3I9Im1pZGRsZSI+4pGgIFN0YXJ0IDx0c3BhbiBmaWxsPSIjNmU2ZTczIj4ob25seSBvbmNlKTwvdHNwYW4+PC90ZXh0PgogIDxyZWN0IHg9IjEyMCIgeT0iNzYiIHdpZHRoPSIxNjAiIGhlaWdodD0iMzQiIHJ4PSIxNyIgZmlsbD0iI2ZlZjNjNyIgc3Ryb2tlPSIjYjQ1MzA5IiBzdHJva2Utd2lkdGg9IjIiLz4KICA8dGV4dCB4PSIyMDAiIHk9Ijk4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj7ikaEgY2hlY2sgdGhlIGNvbmRpdGlvbjwvdGV4dD4KICA8cmVjdCB4PSIxMjAiIHk9IjEzOCIgd2lkdGg9IjE2MCIgaGVpZ2h0PSIzNCIgcng9IjYiIGZpbGw9IiNkYmVhZmUiIHN0cm9rZT0iIzFkNGVkOCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjAwIiB5PSIxNjAiIHRleHQtYW5jaG9yPSJtaWRkbGUiPuKRoiBydW4gdGhlIGluc2lkZTwvdGV4dD4KICA8cmVjdCB4PSIxMjAiIHk9IjIwMCIgd2lkdGg9IjE2MCIgaGVpZ2h0PSIzNCIgcng9IjYiIGZpbGw9IiNkY2ZjZTciIHN0cm9rZT0iIzE1ODAzZCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjAwIiB5PSIyMjIiIHRleHQtYW5jaG9yPSJtaWRkbGUiPuKRoyBzdGVwLCBlLmcuIGkrKzwvdGV4dD4KICA8ZyBmaWxsPSJub25lIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI2EpIj4KICAgIDxsaW5lIHgxPSIyMDAiIHkxPSI0OCIgeDI9IjIwMCIgeTI9Ijc0Ii8+CiAgICA8bGluZSB4MT0iMjAwIiB5MT0iMTEwIiB4Mj0iMjAwIiB5Mj0iMTM2Ii8+CiAgICA8bGluZSB4MT0iMjAwIiB5MT0iMTcyIiB4Mj0iMjAwIiB5Mj0iMTk4Ii8+CiAgICA8cGF0aCBkPSJNMTIwIDIxNyBDNjAgMjE3LCA2MCA5MywgMTE4IDkzIi8+CiAgICA8cGF0aCBkPSJNMjgwIDkzIEwzMzAgOTMiLz4KICA8L2c+CiAgPHRleHQgeD0iMjA4IiB5PSIxMjkiIGZpbGw9IiMxNTgwM2QiIGZvbnQtd2VpZ2h0PSI2MDAiPnRydWU8L3RleHQ+CiAgPHRleHQgeD0iNDgiIHk9IjE2MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzZlNmU3MyI+YmFjazwvdGV4dD4KICA8dGV4dCB4PSI0OCIgeT0iMTc2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj50byDikaE8L3RleHQ+CiAgPHRleHQgeD0iMzAwIiB5PSI4NCIgZmlsbD0iI2I5MWMxYyIgZm9udC13ZWlnaHQ9IjYwMCI+ZmFsc2U8L3RleHQ+CiAgPHRleHQgeD0iMzM2IiB5PSI5OCI+ZG9uZTwvdGV4dD4KPC9zdmc+Cg==",oL=""+new URL("l12-while-zu-for-DddKE_8R.svg",import.meta.url).href,lL=""+new URL("l13-verschachtelt-tabelle-jipYA7Ld.svg",import.meta.url).href,uL="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMTkwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMDA3YWZmIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMTkwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHRleHQgeD0iMjAiIHk9IjI0IiBmb250LWZhbWlseT0idWktbW9ub3NwYWNlLCBNZW5sbywgQ29uc29sYXMsIG1vbm9zcGFjZSIgZm9udC1zaXplPSIxNCI+aW50W10gbnVtYmVycyA9IHsyLCA0LCA2LCA4LCAxMH08L3RleHQ+CiAgPHRleHQgeD0iMjAiIHk9IjU0IiBmaWxsPSIjNmU2ZTczIiBmb250LXNpemU9IjEyIj5JbmRleDwvdGV4dD4KICA8dGV4dCB4PSI5MCIgeT0iNTQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMwMDdhZmYiIGZvbnQtd2VpZ2h0PSI3MDAiPjA8L3RleHQ+PHJlY3QgeD0iNjAiIHk9IjYyIiB3aWR0aD0iNjAiIGhlaWdodD0iNDYiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIyIi8+PHRleHQgeD0iOTAiIHk9IjkyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE4IiBmb250LXdlaWdodD0iNjAwIj4yPC90ZXh0PgogIDx0ZXh0IHg9IjE1MCIgeT0iNTQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMwMDdhZmYiIGZvbnQtd2VpZ2h0PSI3MDAiPjE8L3RleHQ+PHJlY3QgeD0iMTIwIiB5PSI2MiIgd2lkdGg9IjYwIiBoZWlnaHQ9IjQ2IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMiIvPjx0ZXh0IHg9IjE1MCIgeT0iOTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTgiIGZvbnQtd2VpZ2h0PSI2MDAiPjQ8L3RleHQ+CiAgPHRleHQgeD0iMjEwIiB5PSI1NCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzAwN2FmZiIgZm9udC13ZWlnaHQ9IjcwMCI+MjwvdGV4dD48cmVjdCB4PSIxODAiIHk9IjYyIiB3aWR0aD0iNjAiIGhlaWdodD0iNDYiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIyIi8+PHRleHQgeD0iMjEwIiB5PSI5MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxOCIgZm9udC13ZWlnaHQ9IjYwMCI+NjwvdGV4dD4KICA8dGV4dCB4PSIyNzAiIHk9IjU0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjMDA3YWZmIiBmb250LXdlaWdodD0iNzAwIj4zPC90ZXh0PjxyZWN0IHg9IjI0MCIgeT0iNjIiIHdpZHRoPSI2MCIgaGVpZ2h0PSI0NiIgZmlsbD0iI2YyZjJmNyIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz48dGV4dCB4PSIyNzAiIHk9IjkyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE4IiBmb250LXdlaWdodD0iNjAwIj44PC90ZXh0PgogIDx0ZXh0IHg9IjMzMCIgeT0iNTQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMwMDdhZmYiIGZvbnQtd2VpZ2h0PSI3MDAiPjQ8L3RleHQ+PHJlY3QgeD0iMzAwIiB5PSI2MiIgd2lkdGg9IjYwIiBoZWlnaHQ9IjQ2IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMiIvPjx0ZXh0IHg9IjMzMCIgeT0iOTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTgiIGZvbnQtd2VpZ2h0PSI2MDAiPjEwPC90ZXh0PgogIDx0ZXh0IHg9IjIwIiB5PSI5MCIgZmlsbD0iIzZlNmU3MyIgZm9udC1zaXplPSIxMiI+VmFsdWU8L3RleHQ+CiAgPGcgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDA3YWZmIiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNhKSI+PGxpbmUgeDE9IjkwIiB5MT0iMTQwIiB4Mj0iOTAiIHkyPSIxMTIiLz48bGluZSB4MT0iMzMwIiB5MT0iMTQwIiB4Mj0iMzMwIiB5Mj0iMTEyIi8+PC9nPgogIDxnIGZvbnQtZmFtaWx5PSJ1aS1tb25vc3BhY2UsIE1lbmxvLCBDb25zb2xhcywgbW9ub3NwYWNlIiBmb250LXNpemU9IjEzIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj48dGV4dCB4PSI5MCIgeT0iMTU2Ij5udW1iZXJzWzBdIGlzIDI8L3RleHQ+PHRleHQgeD0iMzMwIiB5PSIxNTYiPm51bWJlcnNbNF0gaXMgMTA8L3RleHQ+PC9nPgogIDx0ZXh0IHg9IjIwMCIgeT0iMTgyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj41IHNsb3RzLCBjb3VudGluZyBzdGFydHMgYXQgMDogdGhlIGxhc3QgaW5kZXggaXMgNC48L3RleHQ+Cjwvc3ZnPgo=",mL="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDAgMjkwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0NDAiIGhlaWdodD0iMjkwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHJlY3QgeD0iMTEwIiB5PSIxMiIgd2lkdGg9IjIyMCIgaGVpZ2h0PSI0OCIgcng9IjYiIGZpbGw9IiNkYmVhZmUiIHN0cm9rZT0iIzFkNGVkOCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjIwIiB5PSIzMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1mYW1pbHk9InVpLW1vbm9zcGFjZSwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2UiIGZvbnQtd2VpZ2h0PSI2MDAiPmNhbGN1bGF0b3IuY3BwPC90ZXh0PgogIDx0ZXh0IHg9IjIyMCIgeT0iNTEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiMzYTNhM2MiPnNvdXJjZSBjb2RlIGluIEMrKzwvdGV4dD4KICA8ZyBmaWxsPSJub25lIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI2EpIj4KICAgIDxsaW5lIHgxPSIyMjAiIHkxPSI2MCIgeDI9IjgwIiB5Mj0iOTQiLz4KICAgIDxsaW5lIHgxPSI4MCIgeTE9IjEyNiIgeDI9IjgwIiB5Mj0iMTU2Ii8+CiAgICA8bGluZSB4MT0iMjIwIiB5MT0iNjAiIHgyPSIyMjAiIHkyPSI5NCIvPgogICAgPGxpbmUgeDE9IjIyMCIgeTE9IjEyNiIgeDI9IjIyMCIgeTI9IjE1NiIvPgogICAgPGxpbmUgeDE9IjIyMCIgeTE9IjYwIiB4Mj0iMzYwIiB5Mj0iOTQiLz4KICAgIDxsaW5lIHgxPSIzNjAiIHkxPSIxMjYiIHgyPSIzNjAiIHkyPSIxNTYiLz4KICA8L2c+CiAgPHJlY3QgeD0iMTgiIHk9Ijk2IiB3aWR0aD0iMTI0IiBoZWlnaHQ9IjMwIiByeD0iMTUiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KICA8dGV4dCB4PSI4MCIgeT0iMTE2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIj5jb21waWxlcjwvdGV4dD4KICA8cmVjdCB4PSIxOCIgeT0iMTU4IiB3aWR0aD0iMTI0IiBoZWlnaHQ9IjM2IiByeD0iNiIgZmlsbD0iI2ZlZTJlMiIgc3Ryb2tlPSIjYjkxYzFjIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8dGV4dCB4PSI4MCIgeT0iMTgxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iNjAwIj5tYWNoaW5lIGNvZGU8L3RleHQ+CiAgPHJlY3QgeD0iMTgiIHk9IjE5NCIgd2lkdGg9IjEyNCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iODAiIHk9IjIxNyIgdGV4dC1hbmNob3I9Im1pZGRsZSI+V2luZG93czwvdGV4dD4KICA8cmVjdCB4PSIxNTgiIHk9Ijk2IiB3aWR0aD0iMTI0IiBoZWlnaHQ9IjMwIiByeD0iMTUiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KICA8dGV4dCB4PSIyMjAiIHk9IjExNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyI+Y29tcGlsZXI8L3RleHQ+CiAgPHJlY3QgeD0iMTU4IiB5PSIxNTgiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZmVlMmUyIiBzdHJva2U9IiNiOTFjMWMiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjIyMCIgeT0iMTgxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iNjAwIj5tYWNoaW5lIGNvZGU8L3RleHQ+CiAgPHJlY3QgeD0iMTU4IiB5PSIxOTQiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiM2ZTZlNzMiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjIyMCIgeT0iMjE3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5tYWNPUzwvdGV4dD4KICA8cmVjdCB4PSIyOTgiIHk9Ijk2IiB3aWR0aD0iMTI0IiBoZWlnaHQ9IjMwIiByeD0iMTUiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KICA8dGV4dCB4PSIzNjAiIHk9IjExNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyI+Y29tcGlsZXI8L3RleHQ+CiAgPHJlY3QgeD0iMjk4IiB5PSIxNTgiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZmVlMmUyIiBzdHJva2U9IiNiOTFjMWMiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjM2MCIgeT0iMTgxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iNjAwIj5tYWNoaW5lIGNvZGU8L3RleHQ+CiAgPHJlY3QgeD0iMjk4IiB5PSIxOTQiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiM2ZTZlNzMiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjM2MCIgeT0iMjE3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5MaW51eDwvdGV4dD4KICA8dGV4dCB4PSIyMjAiIHk9IjI1OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zdHlsZT0iaXRhbGljIj5Db21waWxlIGFnYWluPC90ZXh0PgogIDx0ZXh0IHg9IjIyMCIgeT0iMjc4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXN0eWxlPSJpdGFsaWMiPmZvciBldmVyeSBzeXN0ZW08L3RleHQ+Cjwvc3ZnPgo=",cL="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDAgMzMwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0NDAiIGhlaWdodD0iMzMwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHJlY3QgeD0iMTEwIiB5PSIxMiIgd2lkdGg9IjIyMCIgaGVpZ2h0PSI0OCIgcng9IjYiIGZpbGw9IiNkYmVhZmUiIHN0cm9rZT0iIzFkNGVkOCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjIwIiB5PSIzMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1mYW1pbHk9InVpLW1vbm9zcGFjZSwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2UiIGZvbnQtd2VpZ2h0PSI2MDAiPlRpbWVzVGFibGUuamF2YTwvdGV4dD4KICA8dGV4dCB4PSIyMjAiIHk9IjUxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIiBmaWxsPSIjM2EzYTNjIj5zb3VyY2UgY29kZSwgZm9yIHBlb3BsZTwvdGV4dD4KICA8cmVjdCB4PSIxMTAiIHk9IjEwNCIgd2lkdGg9IjIyMCIgaGVpZ2h0PSI0OCIgcng9IjYiIGZpbGw9IiNmZWYzYzciIHN0cm9rZT0iI2I0NTMwOSIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjIwIiB5PSIxMjQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtZmFtaWx5PSJ1aS1tb25vc3BhY2UsIE1lbmxvLCBDb25zb2xhcywgbW9ub3NwYWNlIiBmb250LXdlaWdodD0iNjAwIj5UaW1lc1RhYmxlLmNsYXNzPC90ZXh0PgogIDx0ZXh0IHg9IjIyMCIgeT0iMTQzIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIiBmaWxsPSIjM2EzYTNjIj5ieXRlY29kZTogQ0EgRkUgQkEgQkUg4oCmPC90ZXh0PgogIDxnIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIxLjgiIG1hcmtlci1lbmQ9InVybCgjYSkiPgogICAgPGxpbmUgeDE9IjIyMCIgeTE9IjYwIiB4Mj0iMjIwIiB5Mj0iMTAyIi8+CiAgICA8bGluZSB4MT0iMjIwIiB5MT0iMTUyIiB4Mj0iODAiIHkyPSIxOTYiLz4KICAgIDxsaW5lIHgxPSIyMjAiIHkxPSIxNTIiIHgyPSIyMjAiIHkyPSIxOTYiLz4KICAgIDxsaW5lIHgxPSIyMjAiIHkxPSIxNTIiIHgyPSIzNjAiIHkyPSIxOTYiLz4KICA8L2c+CiAgPHRleHQgeD0iMjMwIiB5PSI4NiI+Y29tcGlsZXIgamF2YWM8L3RleHQ+CiAgPHJlY3QgeD0iMTgiIHk9IjE5OCIgd2lkdGg9IjEyNCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNkY2ZjZTciIHN0cm9rZT0iIzE1ODAzZCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iODAiIHk9IjIyMSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+SlZNPC90ZXh0PgogIDxyZWN0IHg9IjE4IiB5PSIyMzQiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiM2ZTZlNzMiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjgwIiB5PSIyNTciIHRleHQtYW5jaG9yPSJtaWRkbGUiPldpbmRvd3M8L3RleHQ+CiAgPHJlY3QgeD0iMTU4IiB5PSIxOTgiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZGNmY2U3IiBzdHJva2U9IiMxNTgwM2QiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjIyMCIgeT0iMjIxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iNjAwIj5KVk08L3RleHQ+CiAgPHJlY3QgeD0iMTU4IiB5PSIyMzQiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiM2ZTZlNzMiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjIyMCIgeT0iMjU3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5tYWNPUzwvdGV4dD4KICA8cmVjdCB4PSIyOTgiIHk9IjE5OCIgd2lkdGg9IjEyNCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNkY2ZjZTciIHN0cm9rZT0iIzE1ODAzZCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMzYwIiB5PSIyMjEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSI2MDAiPkpWTTwvdGV4dD4KICA8cmVjdCB4PSIyOTgiIHk9IjIzNCIgd2lkdGg9IjEyNCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMzYwIiB5PSIyNTciIHRleHQtYW5jaG9yPSJtaWRkbGUiPkxpbnV4PC90ZXh0PgogIDx0ZXh0IHg9IjIyMCIgeT0iMjk4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXN0eWxlPSJpdGFsaWMiPldyaXRlIG9uY2UsPC90ZXh0PgogIDx0ZXh0IHg9IjIyMCIgeT0iMzE4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXN0eWxlPSJpdGFsaWMiPnJ1biBhbnl3aGVyZTwvdGV4dD4KPC9zdmc+Cg==",dL=""+new URL("mvc-klick-BIA_bYzu.svg",import.meta.url).href,hL=""+new URL("ss-binaere-suche-D02W1TH_.svg",import.meta.url).href,gL=""+new URL("ss-bubblesort-CmKEoNfO.svg",import.meta.url).href,pL="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDQgMTk2IiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmaWxsPSIjMWMxYzFlIj4KPHJlY3Qgd2lkdGg9IjQwNCIgaGVpZ2h0PSIxOTYiIGZpbGw9IiNmZmZmZmYiLz4KPHRleHQgeD0iMTQiIHk9IjI0IiBmb250LXdlaWdodD0iNjAwIiBmb250LXNpemU9IjE1Ij5Mb29raW5nIGZvciB0aGUgOS4gVGhlIGNhcmRzIGFyZSBtaXhlZCB1cC48L3RleHQ+CjxnPjxyZWN0IHg9IjE0IiB5PSI1MCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjU2IiByeD0iNSIgZmlsbD0iI2YyZjJmNyIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjEiLz48dGV4dCB4PSIzNC4wIiB5PSI3NS4yIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE4IiBmb250LXdlaWdodD0iNzAwIiBmaWxsPSIjZGMyNjI2Ij43PC90ZXh0Pjx0ZXh0IHg9IjM0LjAiIHk9Ijk1LjkxOTk5OTk5OTk5OTk5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE1IiBmaWxsPSIjZGMyNjI2Ij7imaU8L3RleHQ+PC9nPgo8dGV4dCB4PSIzNC4wIiB5PSIxMzAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTYiIGZvbnQtd2VpZ2h0PSI2MDAiIGZpbGw9IiNkYzI2MjYiPuKclzwvdGV4dD4KPHRleHQgeD0iMzQuMCIgeT0iMTQ4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIiBmaWxsPSIjNmU2ZTczIj4xLjwvdGV4dD4KPGc+PHJlY3QgeD0iNjIiIHk9IjUwIiB3aWR0aD0iNDAiIGhlaWdodD0iNTYiIHJ4PSI1IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMSIvPjx0ZXh0IHg9IjgyLjAiIHk9Ijc1LjIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTgiIGZvbnQtd2VpZ2h0PSI3MDAiIGZpbGw9IiMxYzFjMWUiPjM8L3RleHQ+PHRleHQgeD0iODIuMCIgeT0iOTUuOTE5OTk5OTk5OTk5OTkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTUiIGZpbGw9IiMxYzFjMWUiPuKZoDwvdGV4dD48L2c+Cjx0ZXh0IHg9IjgyLjAiIHk9IjEzMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxNiIgZm9udC13ZWlnaHQ9IjYwMCIgZmlsbD0iI2RjMjYyNiI+4pyXPC90ZXh0Pgo8dGV4dCB4PSI4Mi4wIiB5PSIxNDgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiM2ZTZlNzMiPjIuPC90ZXh0Pgo8Zz48cmVjdCB4PSIxMTAiIHk9IjUwIiB3aWR0aD0iNDAiIGhlaWdodD0iNTYiIHJ4PSI1IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMSIvPjx0ZXh0IHg9IjEzMC4wIiB5PSI3NS4yIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE4IiBmb250LXdlaWdodD0iNzAwIiBmaWxsPSIjZGMyNjI2Ij4xMDwvdGV4dD48dGV4dCB4PSIxMzAuMCIgeT0iOTUuOTE5OTk5OTk5OTk5OTkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTUiIGZpbGw9IiNkYzI2MjYiPuKZpjwvdGV4dD48L2c+Cjx0ZXh0IHg9IjEzMC4wIiB5PSIxMzAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTYiIGZvbnQtd2VpZ2h0PSI2MDAiIGZpbGw9IiNkYzI2MjYiPuKclzwvdGV4dD4KPHRleHQgeD0iMTMwLjAiIHk9IjE0OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyIgZmlsbD0iIzZlNmU3MyI+My48L3RleHQ+CjxnPjxyZWN0IHg9IjE1OCIgeT0iNTAiIHdpZHRoPSI0MCIgaGVpZ2h0PSI1NiIgcng9IjUiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIxIi8+PHRleHQgeD0iMTc4LjAiIHk9Ijc1LjIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTgiIGZvbnQtd2VpZ2h0PSI3MDAiIGZpbGw9IiMxYzFjMWUiPjU8L3RleHQ+PHRleHQgeD0iMTc4LjAiIHk9Ijk1LjkxOTk5OTk5OTk5OTk5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE1IiBmaWxsPSIjMWMxYzFlIj7imaM8L3RleHQ+PC9nPgo8dGV4dCB4PSIxNzguMCIgeT0iMTMwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE2IiBmb250LXdlaWdodD0iNjAwIiBmaWxsPSIjZGMyNjI2Ij7inJc8L3RleHQ+Cjx0ZXh0IHg9IjE3OC4wIiB5PSIxNDgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiM2ZTZlNzMiPjQuPC90ZXh0Pgo8Zz48cmVjdCB4PSIyMDYiIHk9IjUwIiB3aWR0aD0iNDAiIGhlaWdodD0iNTYiIHJ4PSI1IiBmaWxsPSIjZGNmY2U3IiBzdHJva2U9IiMxNTgwM2QiIHN0cm9rZS13aWR0aD0iMyIvPjx0ZXh0IHg9IjIyNi4wIiB5PSI3NS4yIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE4IiBmb250LXdlaWdodD0iNzAwIiBmaWxsPSIjMWMxYzFlIj45PC90ZXh0Pjx0ZXh0IHg9IjIyNi4wIiB5PSI5NS45MTk5OTk5OTk5OTk5OSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxNSIgZmlsbD0iIzFjMWMxZSI+4pmgPC90ZXh0PjwvZz4KPHRleHQgeD0iMjI2LjAiIHk9IjEzMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxNiIgZm9udC13ZWlnaHQ9IjYwMCIgZmlsbD0iIzE1ODAzZCI+4pyTPC90ZXh0Pgo8dGV4dCB4PSIyMjYuMCIgeT0iMTQ4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIiBmaWxsPSIjNmU2ZTczIj41LjwvdGV4dD4KPGc+PHJlY3QgeD0iMjU0IiB5PSI1MCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjU2IiByeD0iNSIgZmlsbD0iIzFkNGVkOCIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjEiLz48cmVjdCB4PSIyNTgiIHk9IjU0IiB3aWR0aD0iMzIiIGhlaWdodD0iNDgiIHJ4PSIzIiBmaWxsPSJub25lIiBzdHJva2U9IiM5M2M1ZmQiIHN0cm9rZS13aWR0aD0iMS4yIiBzdHJva2UtZGFzaGFycmF5PSIzIDIiLz48L2c+CjxnPjxyZWN0IHg9IjMwMiIgeT0iNTAiIHdpZHRoPSI0MCIgaGVpZ2h0PSI1NiIgcng9IjUiIGZpbGw9IiMxZDRlZDgiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIxIi8+PHJlY3QgeD0iMzA2IiB5PSI1NCIgd2lkdGg9IjMyIiBoZWlnaHQ9IjQ4IiByeD0iMyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjOTNjNWZkIiBzdHJva2Utd2lkdGg9IjEuMiIgc3Ryb2tlLWRhc2hhcnJheT0iMyAyIi8+PC9nPgo8Zz48cmVjdCB4PSIzNTAiIHk9IjUwIiB3aWR0aD0iNDAiIGhlaWdodD0iNTYiIHJ4PSI1IiBmaWxsPSIjMWQ0ZWQ4IiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMSIvPjxyZWN0IHg9IjM1NCIgeT0iNTQiIHdpZHRoPSIzMiIgaGVpZ2h0PSI0OCIgcng9IjMiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzkzYzVmZCIgc3Ryb2tlLXdpZHRoPSIxLjIiIHN0cm9rZS1kYXNoYXJyYXk9IjMgMiIvPjwvZz4KPHRleHQgeD0iMTQiIHk9IjE2OCIgZm9udC1zaXplPSIxNSIgZmlsbD0iIzZlNmU3MyI+VHVybiB0aGVtIG92ZXIgZnJvbSBsZWZ0IHRvIHJpZ2h0OjwvdGV4dD48dGV4dCB4PSIxNCIgeT0iMTg4IiBmb250LXNpemU9IjE1IiBmaWxsPSIjNmU2ZTczIj5BZnRlciA1IGNvbXBhcmlzb25zIHRoZSA5IGlzIGZvdW5kLjwvdGV4dD4KPC9zdmc+Cg==",fL=""+new URL("ss-vergleiche-UczNldcC.svg",import.meta.url).href,bL="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MjAgNDUwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KPGRlZnM+PG1hcmtlciBpZD0iayIgdmlld0JveD0iMCAwIDEwIDEwIiByZWZYPSI5IiByZWZZPSI1IiBtYXJrZXJXaWR0aD0iNiIgbWFya2VySGVpZ2h0PSI2IiBvcmllbnQ9ImF1dG8iPjxwYXRoIGQ9Ik0wIDAgTDEwIDUgTDAgMTAgWiIgZmlsbD0iIzFjMWMxZSIvPjwvbWFya2VyPjxtYXJrZXIgaWQ9ImIiIHZpZXdCb3g9IjAgMCAxMCAxMCIgcmVmWD0iOSIgcmVmWT0iNSIgbWFya2VyV2lkdGg9IjYiIG1hcmtlckhlaWdodD0iNiIgb3JpZW50PSJhdXRvIj48cGF0aCBkPSJNMCAwIEwxMCA1IEwwIDEwIFoiIGZpbGw9IiMxZDRlZDgiLz48L21hcmtlcj48bWFya2VyIGlkPSJvIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2IiBtYXJrZXJIZWlnaHQ9IjYiIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjYjQ1MzA5Ii8+PC9tYXJrZXI+PC9kZWZzPgo8cmVjdCB3aWR0aD0iNDIwIiBoZWlnaHQ9IjQ1MCIgZmlsbD0iI2ZmZmZmZiIvPgo8dGV4dCB4PSIxMCIgeT0iMjIiIGZvbnQtc2l6ZT0iMTUiIGZvbnQtd2VpZ2h0PSI3MDAiPkNhbGwgYnkgdmFsdWU6IGEgY29weTwvdGV4dD4KPHJlY3QgeD0iMTAiIHk9IjM4IiB3aWR0aD0iMTYwIiBoZWlnaHQ9Ijg2IiByeD0iOCIgZmlsbD0iI2VmZjZmZiIgc3Ryb2tlPSIjMWQ0ZWQ4IiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSIyMCIgeT0iNTgiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiMxZDRlZDgiPk1haW4gcHJvZ3JhbTwvdGV4dD4KPHRleHQgeD0iMTYiIHk9Ijk4IiBmb250LXNpemU9IjEyIj5udW1iZXI8L3RleHQ+CjxyZWN0IHg9IjcwIiB5PSI3OCIgd2lkdGg9IjU2IiBoZWlnaHQ9IjMwIiByeD0iNCIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMWMxYzFlIi8+Cjx0ZXh0IHg9Ijk4IiB5PSI5OSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjcwMCI+NTwvdGV4dD4KPHJlY3QgeD0iMjUwIiB5PSIzOCIgd2lkdGg9IjE2MCIgaGVpZ2h0PSI4NiIgcng9IjgiIGZpbGw9IiNmZmY3ZWQiIHN0cm9rZT0iI2I0NTMwOSIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iMjYwIiB5PSI1OCIgZm9udC1zaXplPSIxMyIgZmlsbD0iI2I0NTMwOSI+ZG91YmxlSXQ8L3RleHQ+Cjx0ZXh0IHg9IjI2MCIgeT0iOTgiPng8L3RleHQ+CjxyZWN0IHg9IjI4MCIgeT0iNzgiIHdpZHRoPSI4MCIgaGVpZ2h0PSIzMCIgcng9IjQiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzFjMWMxZSIvPgo8dGV4dCB4PSIzMjAiIHk9Ijk5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj48dHNwYW4gZmlsbD0iIzZlNmU3MyIgdGV4dC1kZWNvcmF0aW9uPSJsaW5lLXRocm91Z2giPjU8L3RzcGFuPiA8dHNwYW4gZm9udC13ZWlnaHQ9IjcwMCI+MTA8L3RzcGFuPjwvdGV4dD4KPGxpbmUgeDE9IjEyOCIgeTE9IjkzIiB4Mj0iMjQ4IiB5Mj0iOTMiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1kYXNoYXJyYXk9IjUgNCIgbWFya2VyLWVuZD0idXJsKCNrKSIvPgo8dGV4dCB4PSIyMTAiIHk9Ijg0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIj5jb3B5PC90ZXh0Pgo8dGV4dCB4PSIxMCIgeT0iMTUwIiBmb250LXNpemU9IjEzIiBmaWxsPSIjNmU2ZTczIj54IGJlY29tZXMgMTAsIGJ1dCBudW1iZXIgc3RheXMgNS48L3RleHQ+Cjx0ZXh0IHg9IjEwIiB5PSIxNjgiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiM2ZTZlNzMiPkxpa2UgYSBwaG90b2NvcHk6IHdyaXRpbmcgb24gdGhlIGNvcHk8L3RleHQ+Cjx0ZXh0IHg9IjEwIiB5PSIxODYiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiM2ZTZlNzMiPmRvZXMgbm90IGNoYW5nZSB0aGUgb3JpZ2luYWwuPC90ZXh0Pgo8bGluZSB4MT0iMTAiIHkxPSIyMDgiIHgyPSI0MTAiIHkyPSIyMDgiIHN0cm9rZT0iI2QxZDFkNiIvPgo8dGV4dCB4PSIxMCIgeT0iMjM2IiBmb250LXNpemU9IjE1IiBmb250LXdlaWdodD0iNzAwIj5DYWxsIGJ5IHJlZmVyZW5jZTogdGhlIHNhbWUgYXJyYXk8L3RleHQ+CjxyZWN0IHg9IjEwIiB5PSIyNTIiIHdpZHRoPSIxNjAiIGhlaWdodD0iNjIiIHJ4PSI4IiBmaWxsPSIjZWZmNmZmIiBzdHJva2U9IiMxZDRlZDgiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjIwIiB5PSIyNzIiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiMxZDRlZDgiPk1haW4gcHJvZ3JhbTwvdGV4dD4KPHRleHQgeD0iMjAiIHk9IjMwMCI+cm93PC90ZXh0Pgo8Y2lyY2xlIGN4PSIxNTAiIGN5PSIyOTUiIHI9IjUiIGZpbGw9IiMxZDRlZDgiLz4KPHJlY3QgeD0iMjUwIiB5PSIyNTIiIHdpZHRoPSIxNjAiIGhlaWdodD0iNjIiIHJ4PSI4IiBmaWxsPSIjZmZmN2VkIiBzdHJva2U9IiNiNDUzMDkiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjI2MCIgeT0iMjcyIiBmb250LXNpemU9IjEzIiBmaWxsPSIjYjQ1MzA5Ij5jbGVhcjwvdGV4dD4KPHRleHQgeD0iMjYwIiB5PSIzMDAiPnNlYXRzPC90ZXh0Pgo8Y2lyY2xlIGN4PSIzOTAiIGN5PSIyOTUiIHI9IjUiIGZpbGw9IiNiNDUzMDkiLz4KPHBhdGggZD0iTTE1MCAzMDAgTDE1MCAzNDAgTDE0MCAzNTIiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzFkNGVkOCIgc3Ryb2tlLXdpZHRoPSIxLjUiIG1hcmtlci1lbmQ9InVybCgjYikiLz4KPHBhdGggZD0iTTM5MCAzMDAgTDM5MCAzNDAgTDMyMiAzNTQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2I0NTMwOSIgc3Ryb2tlLXdpZHRoPSIxLjUiIG1hcmtlci1lbmQ9InVybCgjbykiLz4KPHJlY3QgeD0iOTAiIHk9IjM1OCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjMyIiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMxYzFjMWUiLz4KPHJlY3QgeD0iMTUwIiB5PSIzNTgiIHdpZHRoPSI2MCIgaGVpZ2h0PSIzMiIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMWMxYzFlIi8+CjxyZWN0IHg9IjIxMCIgeT0iMzU4IiB3aWR0aD0iNjAiIGhlaWdodD0iMzIiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzFjMWMxZSIvPgo8cmVjdCB4PSIyNzAiIHk9IjM1OCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjMyIiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMxYzFjMWUiLz4KPHRleHQgeD0iMTIwIiB5PSIzNzkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTMiPmZhbHNlPC90ZXh0Pgo8dGV4dCB4PSIxODAiIHk9IjM3OSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyI+ZmFsc2U8L3RleHQ+Cjx0ZXh0IHg9IjI0MCIgeT0iMzc5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIj5mYWxzZTwvdGV4dD4KPHRleHQgeD0iMzAwIiB5PSIzNzkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTMiPmZhbHNlPC90ZXh0Pgo8dGV4dCB4PSIxMCIgeT0iNDE2IiBmb250LXNpemU9IjEzIiBmaWxsPSIjNmU2ZTczIj5UaGVyZSBpcyBvbmx5IG9uZSBhcnJheS4gV2hhdCBjbGVhciBjaGFuZ2VzIHRocm91Z2ggc2VhdHMsPC90ZXh0Pgo8dGV4dCB4PSIxMCIgeT0iNDM0IiBmb250LXNpemU9IjEzIiBmaWxsPSIjNmU2ZTczIj50aGUgbWFpbiBwcm9ncmFtIHNlZXMgdW5kZXIgcm93LjwvdGV4dD4KPC9zdmc+Cg==",xL=""+new URL("zk-zeichen-CgUEhNoK.svg",import.meta.url).href,vL=""+new URL("grace-hopper-DltOT1I5.jpg",import.meta.url).href,yL=""+new URL("hedy-lamarr-MFZMAlPQ.jpg",import.meta.url).href,wL=""+new URL("ike-nassi-D2w47gvX.jpg",import.meta.url).href,zL=""+new URL("katherine-johnson-k17EjVTs.jpg",import.meta.url).href,IL=""+new URL("kino-saal-CYMOok4_.svg",import.meta.url).href,kL=""+new URL("kino-schleifen-DrTQV7dq.svg",import.meta.url).href,SL="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgNDkyIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iNDkyIiBmaWxsPSIjZmZmZmZmIi8+CiAgPGcgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiPgogICAgPCEtLSBTdGFydCAtLT4KICAgIDxyZWN0IHg9IjEwMCIgeT0iMTAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMjgiIHJ4PSIxNCIgZmlsbD0iI2QxZjJkOSIvPgogICAgPGxpbmUgeDE9IjE1MCIgeTE9IjM4IiB4Mj0iMTUwIiB5Mj0iNTQiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICAgIDwhLS0gQW53ZWlzdW5nIC0tPgogICAgPHJlY3QgeD0iNTAiIHk9IjU2IiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjMwIiBmaWxsPSIjZTVmMGZmIi8+CiAgICA8bGluZSB4MT0iMTUwIiB5MT0iODYiIHgyPSIxNTAiIHkyPSI5OCIgbWFya2VyLWVuZD0idXJsKCNhKSIvPgogICAgPCEtLSBSYXV0ZSAxIC0tPgogICAgPHBhdGggZD0iTTE1MCAxMDAgTDIzNSAxMjggTDE1MCAxNTYgTDY1IDEyOCBaIiBmaWxsPSIjZmZmNGQ2Ii8+CiAgICA8bGluZSB4MT0iMTUwIiB5MT0iMTU2IiB4Mj0iMTUwIiB5Mj0iMTcyIiBtYXJrZXItZW5kPSJ1cmwoI2EpIi8+CiAgICA8cmVjdCB4PSI1MCIgeT0iMTc0IiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjMwIiBmaWxsPSIjZTVmMGZmIi8+CiAgICA8bGluZSB4MT0iMTUwIiB5MT0iMjA0IiB4Mj0iMTUwIiB5Mj0iMjUwIiBtYXJrZXItZW5kPSJ1cmwoI2EpIi8+CiAgICA8IS0tIG5laW4tV2VnIHVtIGRlbiBLYXN0ZW4gaGVydW0gLS0+CiAgICA8cG9seWxpbmUgcG9pbnRzPSIyMzUsMTI4IDI4NSwxMjggMjg1LDIyMiAxNTAsMjIyIiBmaWxsPSJub25lIiBtYXJrZXItZW5kPSJ1cmwoI2EpIi8+CiAgICA8IS0tIFJhdXRlIDIgLS0+CiAgICA8cGF0aCBkPSJNMTUwIDI1MiBMMjM1IDI4MCBMMTUwIDMwOCBMNjUgMjgwIFoiIGZpbGw9IiNmZmY0ZDYiLz4KICAgIDxsaW5lIHgxPSIyMzUiIHkxPSIyODAiIHgyPSIyNjgiIHkyPSIyODAiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICAgIDxyZWN0IHg9IjI3MCIgeT0iMjY1IiB3aWR0aD0iMTE1IiBoZWlnaHQ9IjMwIiBmaWxsPSIjZTVmMGZmIi8+CiAgICA8IS0tIHp1csO8Y2sgenVyIFByw7xmdW5nIC0tPgogICAgPHBvbHlsaW5lIHBvaW50cz0iMzI3LDI2NSAzMjcsMjM4IDE1MCwyMzgiIGZpbGw9Im5vbmUiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICAgIDxsaW5lIHgxPSIxNTAiIHkxPSIzMDgiIHgyPSIxNTAiIHkyPSIzMjYiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICAgIDxyZWN0IHg9IjUwIiB5PSIzMjgiIHdpZHRoPSIyMDAiIGhlaWdodD0iMzAiIGZpbGw9IiNlNWYwZmYiLz4KICAgIDxsaW5lIHgxPSIxNTAiIHkxPSIzNTgiIHgyPSIxNTAiIHkyPSIzNzQiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICAgIDwhLS0gRW5kZSAtLT4KICAgIDxyZWN0IHg9IjEwMCIgeT0iMzc2IiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjI4IiByeD0iMTQiIGZpbGw9IiNkMWYyZDkiLz4KICA8L2c+CiAgPGcgdGV4dC1hbmNob3I9Im1pZGRsZSI+CiAgICA8dGV4dCB4PSIxNTAiIHk9IjI5Ij5TdGFydDwvdGV4dD4KICAgIDx0ZXh0IHg9IjE1MCIgeT0iNzYiPlRhc3NlIGF1ZiBkZW4gVGlzY2ggc3RlbGxlbjwvdGV4dD4KICAgIDx0ZXh0IHg9IjE1MCIgeT0iMTMzIj5adWNrZXIgZ2V3w7xuc2NodD88L3RleHQ+CiAgICA8dGV4dCB4PSIxNTAiIHk9IjE5NCI+WnVja2VyIGhpbmVpbmdlYmVuPC90ZXh0PgogICAgPHRleHQgeD0iMTUwIiB5PSIyODUiPlRlZSBub2NoIHp1IGhlacOfPzwvdGV4dD4KICAgIDx0ZXh0IHg9IjMyNy41IiB5PSIyODUiPjEgTWludXRlIHdhcnRlbjwvdGV4dD4KICAgIDx0ZXh0IHg9IjE1MCIgeT0iMzQ4Ij5UZWUgdHJpbmtlbjwvdGV4dD4KICAgIDx0ZXh0IHg9IjE1MCIgeT0iMzk1Ij5FbmRlPC90ZXh0PgogIDwvZz4KICA8ZyBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iNjAwIj4KICAgIDx0ZXh0IHg9IjE1NiIgeT0iMTY4IiBmaWxsPSIjMjQ4YTNkIj5qYTwvdGV4dD4KICAgIDx0ZXh0IHg9IjI0MiIgeT0iMTIyIiBmaWxsPSIjZDcwMDE1Ij5uZWluPC90ZXh0PgogICAgPHRleHQgeD0iMjQwIiB5PSIyNzQiIGZpbGw9IiMyNDhhM2QiPmphPC90ZXh0PgogICAgPHRleHQgeD0iMTU2IiB5PSIzMjAiIGZpbGw9IiNkNzAwMTUiPm5laW48L3RleHQ+CiAgPC9nPgogIDwhLS0gTGVnZW5kZSAtLT4KICA8bGluZSB4MT0iMTAiIHkxPSI0MTgiIHgyPSIzOTAiIHkyPSI0MTgiIHN0cm9rZT0iI2QxZDFkNiIvPgogIDxnIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIxLjUiPgogICAgPHJlY3QgeD0iNDAiIHk9IjQzMCIgd2lkdGg9IjM2IiBoZWlnaHQ9IjE4IiByeD0iOSIgZmlsbD0iI2QxZjJkOSIvPgogICAgPHJlY3QgeD0iMjIwIiB5PSI0MzAiIHdpZHRoPSIzNiIgaGVpZ2h0PSIxOCIgZmlsbD0iI2U1ZjBmZiIvPgogICAgPHBhdGggZD0iTTU4IDQ1OCBMNzYgNDY5IEw1OCA0ODAgTDQwIDQ2OSBaIiBmaWxsPSIjZmZmNGQ2Ii8+CiAgICA8cGF0aCBkPSJNMjI2IDQ2MCBMMjU2IDQ2MCBMMjUwIDQ3OCBMMjIwIDQ3OCBaIiBmaWxsPSIjZjJlNmZmIi8+CiAgPC9nPgogIDxnIGZvbnQtc2l6ZT0iMTIiIGZpbGw9IiMzYTNhM2MiPgogICAgPHRleHQgeD0iODYiIHk9IjQ0MyI+U3RhcnQgb2RlciBFbmRlPC90ZXh0PgogICAgPHRleHQgeD0iMjY2IiB5PSI0NDMiPkFud2Vpc3VuZzwvdGV4dD4KICAgIDx0ZXh0IHg9Ijg2IiB5PSI0NzMiPlZlcnp3ZWlndW5nPC90ZXh0PgogICAgPHRleHQgeD0iMjY2IiB5PSI0NzMiPkVpbi0gb2RlciBBdXNnYWJlPC90ZXh0PgogIDwvZz4KPC9zdmc+Cg==",TL="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMTkwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8cmVjdCB3aWR0aD0iNDAwIiBoZWlnaHQ9IjE5MCIgZmlsbD0iI2ZmZmZmZiIvPgogIDx0ZXh0IHg9IjIwIiB5PSIyNCIgZm9udC13ZWlnaHQ9IjYwMCI+V29oaW4gbGFuZGV0IGRhcyBFbGVtZW50PzwvdGV4dD4KICA8cmVjdCB4PSIyMCIgeT0iNDAiIHdpZHRoPSIxOTAiIGhlaWdodD0iMzUiIGZpbGw9IiNkYmVhZmUiLz4KICA8cmVjdCB4PSIyMCIgeT0iNzUiIHdpZHRoPSIxOTAiIGhlaWdodD0iMzUiIGZpbGw9IiNkY2ZjZTciLz4KICA8bGluZSB4MT0iMjAiIHkxPSI3NSIgeDI9IjIxMCIgeTI9Ijc1IiBzdHJva2U9IiM2ZTZlNzMiIHN0cm9rZS1kYXNoYXJyYXk9IjQgMyIvPgogIDxyZWN0IHg9IjIwIiB5PSI0MCIgd2lkdGg9IjE5MCIgaGVpZ2h0PSI3MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8dGV4dCB4PSIxMTUiIHk9IjYyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjMWQ0ZWQ4Ij5vYmVyZSBIw6RsZnRlPC90ZXh0PgogIDx0ZXh0IHg9IjExNSIgeT0iOTciIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMxNTgwM2QiPnVudGVyZSBIw6RsZnRlPC90ZXh0PgogIDx0ZXh0IHg9IjIyNCIgeT0iNjIiPuKGkiBrb21tdCA8dHNwYW4gZm9udC13ZWlnaHQ9IjYwMCI+ZGF2b3I8L3RzcGFuPjwvdGV4dD4KICA8dGV4dCB4PSIyMjQiIHk9Ijk3Ij7ihpIga29tbXQgPHRzcGFuIGZvbnQtd2VpZ2h0PSI2MDAiPmRhaGludGVyPC90c3Bhbj48L3RleHQ+CiAgPHJlY3QgeD0iMjAiIHk9IjEzMiIgd2lkdGg9IjE5MCIgaGVpZ2h0PSI0MCIgZmlsbD0iI2ZlZjNjNyIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8dGV4dCB4PSIxMTUiIHk9IjE1NyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxNiI+w7g8L3RleHQ+CiAgPHRleHQgeD0iMjI0IiB5PSIxNTciPuKGkiA8dHNwYW4gZm9udC13ZWlnaHQ9IjYwMCI+ZXJzZXR6dDwvdHNwYW4+IGRlbiBQbGF0emhhbHRlcjwvdGV4dD4KPC9zdmc+Cg==",_L=""+new URL("l03-lochkarte-beschriftet-7hmU_7ct.svg",import.meta.url).href,jL=""+new URL("l03-lochkarte-gzfFEatc.svg",import.meta.url).href,CL=""+new URL("l03-zuse-lochstreifen-B87kqGex.svg",import.meta.url).href,AL="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NjAgMjkwIiBmb250LWZhbWlseT0idWktbW9ub3NwYWNlLCBNZW5sbywgQ29uc29sYXMsIG1vbm9zcGFjZSI+CjxyZWN0IHdpZHRoPSI0NjAiIGhlaWdodD0iMjkwIiBmaWxsPSIjZmZmZmZmIi8+Cjx0ZXh0IHg9IjUwIiB5PSI0NCIgZm9udC1zaXplPSI0MCIgZmlsbD0iIzZlNmU3MyIgdGV4dExlbmd0aD0iMzM2IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmdBbmRHbHlwaHMiPnByZWlzPHRzcGFuIGZpbGw9IiMwMDdhZmYiIGZvbnQtd2VpZ2h0PSI3MDAiPk08L3RzcGFuPml0PHRzcGFuIGZpbGw9IiMwMDdhZmYiIGZvbnQtd2VpZ2h0PSI3MDAiPlM8L3RzcGFuPnRldWVyPC90ZXh0Pgo8bGluZSB4MT0iMTgyIiB5MT0iNTQiIHgyPSIxODIiIHkyPSI4MiIgc3Ryb2tlPSIjMDA3YWZmIiBzdHJva2Utd2lkdGg9IjIuNSIgc3Ryb2tlLWRhc2hhcnJheT0iNSA0Ii8+CjxsaW5lIHgxPSIyNTQiIHkxPSI1NCIgeDI9IjI1NCIgeTI9IjgyIiBzdHJva2U9IiMwMDdhZmYiIHN0cm9rZS13aWR0aD0iMi41IiBzdHJva2UtZGFzaGFycmF5PSI1IDQiLz4KPHBhdGggZD0iTTIwIDI3MiBINDQwIiBzdHJva2U9IiNlNWQzYjAiIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjxwYXRoIGQ9Ik0xNTYgMTcyIEwxNTAgMjI2IiBzdHJva2U9IiNiODhhNTIiIHN0cm9rZS13aWR0aD0iMTMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTUwIDIyNiBMMTU2IDI2MiIgc3Ryb2tlPSIjYjg4YTUyIiBzdHJva2Utd2lkdGg9IjgiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8Y2lyY2xlIGN4PSIxNTAiIGN5PSIyMjYiIHI9IjYiIGZpbGw9IiM3YTU1MzAiIG9wYWNpdHk9IjAuNTUiLz4KPGVsbGlwc2UgY3g9IjE2MSIgY3k9IjI2NyIgcng9IjExIiByeT0iNSIgZmlsbD0iIzdhNTUzMCIvPgo8cGF0aCBkPSJNMzA0IDE3MiBMMzA4IDIyNiIgc3Ryb2tlPSIjYjg4YTUyIiBzdHJva2Utd2lkdGg9IjEzIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPHBhdGggZD0iTTMwOCAyMjYgTDMwNCAyNjIiIHN0cm9rZT0iI2I4OGE1MiIgc3Ryb2tlLXdpZHRoPSI4IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPGNpcmNsZSBjeD0iMzA4IiBjeT0iMjI2IiByPSI2IiBmaWxsPSIjN2E1NTMwIiBvcGFjaXR5PSIwLjU1Ii8+CjxlbGxpcHNlIGN4PSIzMDkiIGN5PSIyNjciIHJ4PSIxMSIgcnk9IjUiIGZpbGw9IiM3YTU1MzAiLz4KPHBhdGggZD0iTTEyMCAxNDAgQzEwNCAxNTAgMTA0IDE3NiAxMTAgMTk2IiBmaWxsPSJub25lIiBzdHJva2U9IiNiODhhNTIiIHN0cm9rZS13aWR0aD0iNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjxlbGxpcHNlIGN4PSIxMTAiIGN5PSIyMDAiIHJ4PSI1IiByeT0iOSIgZmlsbD0iIzdhNTUzMCIvPgo8cGF0aCBkPSJNMTIwIDE3MiBDMTA4IDE1MiAxMTQgMTI4IDEzNCAxMjIgQzE0OCAxMjAgMTU0IDg0IDE4MiA4NCBDMjEwIDg0IDIwOCAxMjYgMjE4IDEyNCBDMjI4IDEyNiAyMjYgODQgMjU0IDg0IEMyODIgODQgMjg0IDEyMiAyOTQgMTI4IEMzMTYgMTMyIDMyNCAxNTggMzQwIDE1OCBDMzUyIDE1OCAzNTQgMTI0IDM1OCAxMTAgQzM2MiA5OCAzNzYgOTYgMzg4IDk5IEM0MDAgMTAyIDQwNiAxMDggNDA0IDExNiBDNDAyIDEyMyAzOTAgMTI0IDM4MCAxMjIgQzM3MiAxMjIgMzcwIDEyOCAzNzAgMTM2IEMzNzAgMTYyIDM2NCAxODQgMzQyIDE4NiBDMzI2IDE4OCAzMTYgMTgyIDMwNiAxNzggQzI0OCAxODggMTg4IDE4OCAxNDAgMTgyIEMxMzAgMTgwIDEyNCAxNzcgMTIwIDE3MiBaIiBmaWxsPSIjZDJhNTZhIiBzdHJva2U9IiM3YTU1MzAiIHN0cm9rZS13aWR0aD0iMi41IiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0xMzQgMTcyIEwxMjggMjI2IiBzdHJva2U9IiNkMmE1NmEiIHN0cm9rZS13aWR0aD0iMTMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTI4IDIyNiBMMTM0IDI2MiIgc3Ryb2tlPSIjZDJhNTZhIiBzdHJva2Utd2lkdGg9IjgiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8Y2lyY2xlIGN4PSIxMjgiIGN5PSIyMjYiIHI9IjYiIGZpbGw9IiM3YTU1MzAiIG9wYWNpdHk9IjAuNTUiLz4KPGVsbGlwc2UgY3g9IjEzOSIgY3k9IjI2NyIgcng9IjExIiByeT0iNSIgZmlsbD0iIzdhNTUzMCIvPgo8cGF0aCBkPSJNMjg0IDE3MiBMMjg4IDIyNiIgc3Ryb2tlPSIjZDJhNTZhIiBzdHJva2Utd2lkdGg9IjEzIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPHBhdGggZD0iTTI4OCAyMjYgTDI4NCAyNjIiIHN0cm9rZT0iI2QyYTU2YSIgc3Ryb2tlLXdpZHRoPSI4IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPGNpcmNsZSBjeD0iMjg4IiBjeT0iMjI2IiByPSI2IiBmaWxsPSIjN2E1NTMwIiBvcGFjaXR5PSIwLjU1Ii8+CjxlbGxpcHNlIGN4PSIyODkiIGN5PSIyNjciIHJ4PSIxMSIgcnk9IjUiIGZpbGw9IiM3YTU1MzAiLz4KPHBhdGggZD0iTTM2NiAxMDMgTDM2MiA5MiBMMzc0IDEwMCBaIiBmaWxsPSIjZDJhNTZhIiBzdHJva2U9IiM3YTU1MzAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8Y2lyY2xlIGN4PSIzODIiIGN5PSIxMDciIHI9IjMuMiIgZmlsbD0iIzFjMWMxZSIvPgo8cGF0aCBkPSJNMzc3IDEwNCBRMzgyIDEwMSAzODcgMTA0IiBmaWxsPSJub25lIiBzdHJva2U9IiM3YTU1MzAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjxwYXRoIGQ9Ik0zOTggMTA3IHE0IDEgNSA0IiBmaWxsPSJub25lIiBzdHJva2U9IiM3YTU1MzAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjxwYXRoIGQ9Ik0zOTIgMTE5IFEzOTggMTE4IDQwMyAxMTciIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzdhNTUzMCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPC9zdmc+Cg==",PL="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjEwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8cmVjdCB3aWR0aD0iNDAwIiBoZWlnaHQ9IjIxMCIgZmlsbD0iI2ZmZmZmZiIvPgogIDx0ZXh0IHg9IjIwMCIgeT0iMjQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtZmFtaWx5PSJ1aS1tb25vc3BhY2UsIE1lbmxvLCBDb25zb2xhcywgbW9ub3NwYWNlIiBmb250LXNpemU9IjE2Ij5pbnQgYWx0ZXIgPSAxNDwvdGV4dD4KICA8cGF0aCBkPSJNMTMwIDcwIEwxNzAgNTAgTDMwMCA1MCBMMjYwIDcwIFoiIGZpbGw9IiNjOThhM2MiIHN0cm9rZT0iIzhhNWExZiIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHJlY3QgeD0iMTgwIiB5PSIzNCIgd2lkdGg9IjQ0IiBoZWlnaHQ9IjUwIiByeD0iMyIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjNmU2ZTczIiBzdHJva2Utd2lkdGg9IjEuNSIvPgogIDx0ZXh0IHg9IjIwMiIgeT0iNjAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMjAiIGZvbnQtd2VpZ2h0PSI3MDAiPjE0PC90ZXh0PgogIDxyZWN0IHg9IjEzMCIgeT0iNzAiIHdpZHRoPSIxMzAiIGhlaWdodD0iMTAwIiBmaWxsPSIjZTliODcyIiBzdHJva2U9IiM4YTVhMWYiIHN0cm9rZS13aWR0aD0iMiIvPgogIDxwYXRoIGQ9Ik0yNjAgNzAgTDMwMCA1MCBMMzAwIDE1MCBMMjYwIDE3MCBaIiBmaWxsPSIjZDQ5YTRjIiBzdHJva2U9IiM4YTVhMWYiIHN0cm9rZS13aWR0aD0iMiIvPgogIDxyZWN0IHg9IjE1MCIgeT0iMTAwIiB3aWR0aD0iOTAiIGhlaWdodD0iMzAiIHJ4PSI0IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiM4YTVhMWYiLz4KICA8dGV4dCB4PSIxOTUiIHk9IjEyMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+YWx0ZXI8L3RleHQ+CiAgPHJlY3QgeD0iMTM4IiB5PSIxNDIiIHdpZHRoPSIzNCIgaGVpZ2h0PSIyMCIgcng9IjEwIiBmaWxsPSIjMDA3YWZmIi8+CiAgPHRleHQgeD0iMTU1IiB5PSIxNTYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTIiIGZpbGw9IiNmZmZmZmYiIGZvbnQtd2VpZ2h0PSI2MDAiPmludDwvdGV4dD4KICA8ZyBzdHJva2U9IiM2ZTZlNzMiPgogICAgPGxpbmUgeDE9IjMxMCIgeTE9IjQ4IiB4Mj0iMjI2IiB5Mj0iNTIiLz4KICAgIDxsaW5lIHgxPSIzMTAiIHkxPSIxMTUiIHgyPSIyNDIiIHkyPSIxMTUiLz4KICAgIDxsaW5lIHgxPSI4MCIgeTE9IjE1MiIgeDI9IjEzNCIgeTI9IjE1MiIvPgogIDwvZz4KICA8dGV4dCB4PSIzMTYiIHk9IjUyIj5XZXJ0PC90ZXh0PgogIDx0ZXh0IHg9IjMxNiIgeT0iMTE5Ij5OYW1lPC90ZXh0PgogIDx0ZXh0IHg9IjgiIHk9IjE1NiI+RGF0ZW50eXA8L3RleHQ+CiAgPHRleHQgeD0iMjAwIiB5PSIxOTgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiM2ZTZlNzMiPsOcYmVyIGRlbiBOYW1lbiBrb21tc3QgZHUgYW4gZGVuIFdlcnQuPC90ZXh0Pgo8L3N2Zz4K",DL="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjAwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMDA3YWZmIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMjAwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPGcgZm9udC1mYW1pbHk9InVpLW1vbm9zcGFjZSwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2UiIGZvbnQtc2l6ZT0iMjAiPgogICAgPHRleHQgeD0iNjAiIHk9IjExMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjcwMCI+cHVua3RlPC90ZXh0PgogICAgPHRleHQgeD0iMTI1IiB5PSIxMTAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMwMDdhZmYiIGZvbnQtd2VpZ2h0PSI3MDAiPj08L3RleHQ+CiAgICA8dGV4dCB4PSIyNjAiIHk9IjExMCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+cHVua3RlICsgNTwvdGV4dD4KICA8L2c+CiAgPHJlY3QgeD0iMTgwIiB5PSI4NiIgd2lkdGg9IjE2MCIgaGVpZ2h0PSIzNCIgcng9IjYiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzE1ODAzZCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjYwIiB5PSIxNDgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMxNTgwM2QiPuKRoCByZWNodHMgYXVzcmVjaG5lbjogMTAgKyA1ID0gMTU8L3RleHQ+CiAgPHBhdGggZD0iTTI1MCA4MiBDMjMwIDMwLCA5MCAzMCwgNjQgODQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwN2FmZiIgc3Ryb2tlLXdpZHRoPSIyLjUiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICA8dGV4dCB4PSIxNjAiIHk9IjM2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjMDA3YWZmIj7ikaEgRXJnZWJuaXMgbGlua3Mgc3BlaWNoZXJuPC90ZXh0PgogIDxyZWN0IHg9IjIwIiB5PSIxNjQiIHdpZHRoPSIzNjAiIGhlaWdodD0iMjYiIHJ4PSI2IiBmaWxsPSIjZjJmMmY3Ii8+CiAgPHRleHQgeD0iMjAwIiB5PSIxODIiIHRleHQtYW5jaG9yPSJtaWRkbGUiPnB1bmt0ZSB2b3JoZXI6IDx0c3BhbiBmb250LXdlaWdodD0iNzAwIj4xMDwvdHNwYW4+ICAg4oaSICAgcHVua3RlIG5hY2hoZXI6IDx0c3BhbiBmb250LXdlaWdodD0iNzAwIj4xNTwvdHNwYW4+PC90ZXh0Pgo8L3N2Zz4K",BL="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjYwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMjYwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPGcgc3Ryb2tlPSIjNmU2ZTczIiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9Im5vbmUiPgogICAgPHBhdGggZD0iTTQwIDExMCBMNDggMTgwIEwxMDIgMTgwIEwxMTAgMTEwIi8+CiAgICA8cGF0aCBkPSJNMTY1IDExMCBMMTczIDE4MCBMMjI3IDE4MCBMMjM1IDExMCIvPgogICAgPHBhdGggZD0iTTI5MCAxMTAgTDI5OCAxODAgTDM1MiAxODAgTDM2MCAxMTAiLz4KICA8L2c+CiAgPHBhdGggZD0iTTQ0IDEzNSBMNDggMTgwIEwxMDIgMTgwIEwxMDYgMTM1IFoiIGZpbGw9IiNmZGJhNzQiLz4KICA8cGF0aCBkPSJNMjk0IDEzNSBMMjk4IDE4MCBMMzUyIDE4MCBMMzU2IDEzNSBaIiBmaWxsPSIjOTNjNWZkIi8+CiAgPHRleHQgeD0iNzUiIHk9IjIwMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+bGlua3M8L3RleHQ+CiAgPHRleHQgeD0iNzUiIHk9IjIxNyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzZlNmU3MyI+U2FmdDwvdGV4dD4KICA8dGV4dCB4PSIyMDAiIHk9IjIwMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+aGlsZjwvdGV4dD4KICA8dGV4dCB4PSIyMDAiIHk9IjIxNyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzZlNmU3MyI+bGVlcjwvdGV4dD4KICA8dGV4dCB4PSIzMjUiIHk9IjIwMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+cmVjaHRzPC90ZXh0PgogIDx0ZXh0IHg9IjMyNSIgeT0iMjE3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj5XYXNzZXI8L3RleHQ+CiAgPGcgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNhKSI+CiAgICA8cGF0aCBkPSJNODggMTA0IEMxMTAgNzAsIDE2MCA3MCwgMTg2IDEwNCIvPgogICAgPHBhdGggZD0iTTMxOCAxMDQgQzI3MCAxNSwgMTMwIDE1LCA4MiAxMDQiLz4KICAgIDxwYXRoIGQ9Ik0yMTQgMTA0IEMyNDAgNzAsIDI5MCA3MCwgMzEyIDEwNCIvPgogIDwvZz4KICA8ZyBmb250LXdlaWdodD0iNzAwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj4KICAgIDxjaXJjbGUgY3g9IjEzNyIgY3k9IjgwIiByPSIxMSIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMWMxYzFlIi8+PHRleHQgeD0iMTM3IiB5PSI4NSI+MTwvdGV4dD4KICAgIDxjaXJjbGUgY3g9IjIwMCIgY3k9IjM4IiByPSIxMSIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMWMxYzFlIi8+PHRleHQgeD0iMjAwIiB5PSI0MyI+MjwvdGV4dD4KICAgIDxjaXJjbGUgY3g9IjI2MyIgY3k9IjgwIiByPSIxMSIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMWMxYzFlIi8+PHRleHQgeD0iMjYzIiB5PSI4NSI+MzwvdGV4dD4KICA8L2c+CiAgPGcgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1mYW1pbHk9InVpLW1vbm9zcGFjZSwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2UiIGZvbnQtc2l6ZT0iMTIiPgogICAgPHRleHQgeD0iNzAiIHk9IjI0NyI+MTogaGlsZiA9IGxpbmtzPC90ZXh0PgogICAgPHRleHQgeD0iMjAwIiB5PSIyNDciPjI6IGxpbmtzID0gcmVjaHRzPC90ZXh0PgogICAgPHRleHQgeD0iMzMwIiB5PSIyNDciPjM6IHJlY2h0cyA9IGhpbGY8L3RleHQ+CiAgPC9nPgo8L3N2Zz4K",OL="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDAgMzAwIj4KPHJlY3Qgd2lkdGg9IjQ0MCIgaGVpZ2h0PSIzMDAiIGZpbGw9IiNmZmZmZmYiLz4KPGcgdHJhbnNmb3JtPSJyb3RhdGUoLTMgMjAwIDE1MCkiPgo8cmVjdCB4PSI0NCIgeT0iMjQiIHdpZHRoPSIyOTAiIGhlaWdodD0iMjU2IiBmaWxsPSIjMDAwIiBvcGFjaXR5PSIwLjEwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1IDYpIi8+CjxyZWN0IHg9IjQ0IiB5PSIyNCIgd2lkdGg9IjI5MCIgaGVpZ2h0PSIyNTYiIGZpbGw9IiNmZmZkZjYiIHN0cm9rZT0iI2M5YzJhZCIgc3Ryb2tlLXdpZHRoPSIxLjIiLz4KPGxpbmUgeDE9IjQ0IiB5MT0iNTgiIHgyPSIzMzQiIHkyPSI1OCIgc3Ryb2tlPSIjYmNkNGVlIiBzdHJva2Utd2lkdGg9IjEiLz4KPGxpbmUgeDE9IjQ0IiB5MT0iODAiIHgyPSIzMzQiIHkyPSI4MCIgc3Ryb2tlPSIjYmNkNGVlIiBzdHJva2Utd2lkdGg9IjEiLz4KPGxpbmUgeDE9IjQ0IiB5MT0iMTAyIiB4Mj0iMzM0IiB5Mj0iMTAyIiBzdHJva2U9IiNiY2Q0ZWUiIHN0cm9rZS13aWR0aD0iMSIvPgo8bGluZSB4MT0iNDQiIHkxPSIxMjQiIHgyPSIzMzQiIHkyPSIxMjQiIHN0cm9rZT0iI2JjZDRlZSIgc3Ryb2tlLXdpZHRoPSIxIi8+CjxsaW5lIHgxPSI0NCIgeTE9IjE0NiIgeDI9IjMzNCIgeTI9IjE0NiIgc3Ryb2tlPSIjYmNkNGVlIiBzdHJva2Utd2lkdGg9IjEiLz4KPGxpbmUgeDE9IjQ0IiB5MT0iMTY4IiB4Mj0iMzM0IiB5Mj0iMTY4IiBzdHJva2U9IiNiY2Q0ZWUiIHN0cm9rZS13aWR0aD0iMSIvPgo8bGluZSB4MT0iNDQiIHkxPSIxOTAiIHgyPSIzMzQiIHkyPSIxOTAiIHN0cm9rZT0iI2JjZDRlZSIgc3Ryb2tlLXdpZHRoPSIxIi8+CjxsaW5lIHgxPSI0NCIgeTE9IjIxMiIgeDI9IjMzNCIgeTI9IjIxMiIgc3Ryb2tlPSIjYmNkNGVlIiBzdHJva2Utd2lkdGg9IjEiLz4KPGxpbmUgeDE9IjQ0IiB5MT0iMjM0IiB4Mj0iMzM0IiB5Mj0iMjM0IiBzdHJva2U9IiNiY2Q0ZWUiIHN0cm9rZS13aWR0aD0iMSIvPgo8bGluZSB4MT0iNDQiIHkxPSIyNTYiIHgyPSIzMzQiIHkyPSIyNTYiIHN0cm9rZT0iI2JjZDRlZSIgc3Ryb2tlLXdpZHRoPSIxIi8+CjxsaW5lIHgxPSI3OCIgeTE9IjI0IiB4Mj0iNzgiIHkyPSIyODAiIHN0cm9rZT0iI2U4YTBhMCIgc3Ryb2tlLXdpZHRoPSIxLjIiLz4KPGcgZm9udC1mYW1pbHk9IidTZWdvZSBQcmludCcsICdCcmFkbGV5IEhhbmQnLCAnQ2hhbGtib2FyZCBTRScsICdDb21pYyBTYW5zIE1TJywgY3Vyc2l2ZSIgZmlsbD0iIzFmM2E4YSIgdGV4dC1hbmNob3I9Im1pZGRsZSI+Cjx0ZXh0IHg9IjEzMCIgeT0iNzUiIGZvbnQtc2l6ZT0iMTkiIGZvbnQtd2VpZ2h0PSJib2xkIj5hPC90ZXh0Pgo8dGV4dCB4PSIxOTUiIHk9Ijc1IiBmb250LXNpemU9IjE5IiBmb250LXdlaWdodD0iYm9sZCI+YjwvdGV4dD4KPHRleHQgeD0iMjYyIiB5PSI3NSIgZm9udC1zaXplPSIxOSIgZm9udC13ZWlnaHQ9ImJvbGQiPmhpbGY8L3RleHQ+Cjx0ZXh0IHg9IjEzMCIgeT0iOTciIGZvbnQtc2l6ZT0iMTgiPjM8L3RleHQ+Cjx0ZXh0IHg9IjE5NSIgeT0iOTciIGZvbnQtc2l6ZT0iMTgiPuKAkzwvdGV4dD4KPHRleHQgeD0iMjYyIiB5PSI5NyIgZm9udC1zaXplPSIxOCI+4oCTPC90ZXh0Pgo8dGV4dCB4PSIxMzAiIHk9IjExOSIgZm9udC1zaXplPSIxOCI+MzwvdGV4dD4KPHRleHQgeD0iMTk1IiB5PSIxMTkiIGZvbnQtc2l6ZT0iMTgiPjU8L3RleHQ+Cjx0ZXh0IHg9IjI2MiIgeT0iMTE5IiBmb250LXNpemU9IjE4Ij7igJM8L3RleHQ+Cjx0ZXh0IHg9IjEzMCIgeT0iMTQxIiBmb250LXNpemU9IjE4Ij4zPC90ZXh0Pgo8dGV4dCB4PSIxOTUiIHk9IjE0MSIgZm9udC1zaXplPSIxOCI+NTwvdGV4dD4KPHRleHQgeD0iMjYyIiB5PSIxNDEiIGZvbnQtc2l6ZT0iMTgiPjM8L3RleHQ+Cjx0ZXh0IHg9IjEzMCIgeT0iMTYzIiBmb250LXNpemU9IjE4Ij41PC90ZXh0Pgo8dGV4dCB4PSIxOTUiIHk9IjE2MyIgZm9udC1zaXplPSIxOCI+NTwvdGV4dD4KPHRleHQgeD0iMjYyIiB5PSIxNjMiIGZvbnQtc2l6ZT0iMTgiPjM8L3RleHQ+Cjx0ZXh0IHg9IjEzMCIgeT0iMTg1IiBmb250LXNpemU9IjE4Ij41PC90ZXh0Pgo8dGV4dCB4PSIxOTUiIHk9IjE4NSIgZm9udC1zaXplPSIxOCI+MzwvdGV4dD4KPHRleHQgeD0iMjYyIiB5PSIxODUiIGZvbnQtc2l6ZT0iMTgiPjM8L3RleHQ+CjwvZz4KPGcgc3Ryb2tlPSIjMWYzYThhIiBzdHJva2Utd2lkdGg9IjEuNiIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIj4KPHBhdGggZD0iTTEwMCA4MyBRMTkwIDgxIDMwMCA4NCIvPgo8cGF0aCBkPSJNMTYyIDU2IFExNjAgMTUwIDE2MyAxOTQiLz4KPHBhdGggZD0iTTIyOCA1NiBRMjMwIDE1MCAyMjcgMTk0Ii8+CjwvZz4KPC9nPgo8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMDAgMjMyKSByb3RhdGUoLTM4KSI+CjxyZWN0IHg9IjAiIHk9Ii05IiB3aWR0aD0iMTIwIiBoZWlnaHQ9IjE4IiBmaWxsPSIjZjVjMDAwIiBzdHJva2U9IiM4YTZkMDAiIHN0cm9rZS13aWR0aD0iMS4yIi8+CjxsaW5lIHgxPSIwIiB5MT0iLTMiIHgyPSIxMjAiIHkyPSItMyIgc3Ryb2tlPSIjZDlhODAwIiBzdHJva2Utd2lkdGg9IjEiLz4KPGxpbmUgeDE9IjAiIHkxPSIzIiB4Mj0iMTIwIiB5Mj0iMyIgc3Ryb2tlPSIjZDlhODAwIiBzdHJva2Utd2lkdGg9IjEiLz4KPHJlY3QgeD0iMTIwIiB5PSItOSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE4IiBmaWxsPSIjYjhiOGI4IiBzdHJva2U9IiM3NzciIHN0cm9rZS13aWR0aD0iMS4yIi8+CjxyZWN0IHg9IjEzMiIgeT0iLTkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxOCIgcng9IjUiIGZpbGw9IiNmMDhhOWEiIHN0cm9rZT0iI2EyNGE1OCIgc3Ryb2tlLXdpZHRoPSIxLjIiLz4KPHBhdGggZD0iTTAgLTkgTC0yNiAwIEwwIDkgWiIgZmlsbD0iI2U5YzlhMCIgc3Ryb2tlPSIjOGE2ZDRhIiBzdHJva2Utd2lkdGg9IjEuMiIvPgo8cGF0aCBkPSJNLTE3IC0zIEwtMjYgMCBMLTE3IDMgWiIgZmlsbD0iIzMzMyIvPgo8L2c+Cjwvc3ZnPgo=",ML="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDAgMzAwIj4KPHJlY3Qgd2lkdGg9IjQ0MCIgaGVpZ2h0PSIzMDAiIGZpbGw9IiNmZmZmZmYiLz4KPGcgdHJhbnNmb3JtPSJyb3RhdGUoLTMgMjAwIDE1MCkiPgo8cmVjdCB4PSI0NCIgeT0iMjQiIHdpZHRoPSIyOTAiIGhlaWdodD0iMjU2IiBmaWxsPSIjMDAwIiBvcGFjaXR5PSIwLjEwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1IDYpIi8+CjxyZWN0IHg9IjQ0IiB5PSIyNCIgd2lkdGg9IjI5MCIgaGVpZ2h0PSIyNTYiIGZpbGw9IiNmZmZkZjYiIHN0cm9rZT0iI2M5YzJhZCIgc3Ryb2tlLXdpZHRoPSIxLjIiLz4KPGxpbmUgeDE9IjQ0IiB5MT0iNTgiIHgyPSIzMzQiIHkyPSI1OCIgc3Ryb2tlPSIjYmNkNGVlIiBzdHJva2Utd2lkdGg9IjEiLz4KPGxpbmUgeDE9IjQ0IiB5MT0iODAiIHgyPSIzMzQiIHkyPSI4MCIgc3Ryb2tlPSIjYmNkNGVlIiBzdHJva2Utd2lkdGg9IjEiLz4KPGxpbmUgeDE9IjQ0IiB5MT0iMTAyIiB4Mj0iMzM0IiB5Mj0iMTAyIiBzdHJva2U9IiNiY2Q0ZWUiIHN0cm9rZS13aWR0aD0iMSIvPgo8bGluZSB4MT0iNDQiIHkxPSIxMjQiIHgyPSIzMzQiIHkyPSIxMjQiIHN0cm9rZT0iI2JjZDRlZSIgc3Ryb2tlLXdpZHRoPSIxIi8+CjxsaW5lIHgxPSI0NCIgeTE9IjE0NiIgeDI9IjMzNCIgeTI9IjE0NiIgc3Ryb2tlPSIjYmNkNGVlIiBzdHJva2Utd2lkdGg9IjEiLz4KPGxpbmUgeDE9IjQ0IiB5MT0iMTY4IiB4Mj0iMzM0IiB5Mj0iMTY4IiBzdHJva2U9IiNiY2Q0ZWUiIHN0cm9rZS13aWR0aD0iMSIvPgo8bGluZSB4MT0iNDQiIHkxPSIxOTAiIHgyPSIzMzQiIHkyPSIxOTAiIHN0cm9rZT0iI2JjZDRlZSIgc3Ryb2tlLXdpZHRoPSIxIi8+CjxsaW5lIHgxPSI0NCIgeTE9IjIxMiIgeDI9IjMzNCIgeTI9IjIxMiIgc3Ryb2tlPSIjYmNkNGVlIiBzdHJva2Utd2lkdGg9IjEiLz4KPGxpbmUgeDE9IjQ0IiB5MT0iMjM0IiB4Mj0iMzM0IiB5Mj0iMjM0IiBzdHJva2U9IiNiY2Q0ZWUiIHN0cm9rZS13aWR0aD0iMSIvPgo8bGluZSB4MT0iNDQiIHkxPSIyNTYiIHgyPSIzMzQiIHkyPSIyNTYiIHN0cm9rZT0iI2JjZDRlZSIgc3Ryb2tlLXdpZHRoPSIxIi8+CjxsaW5lIHgxPSI3OCIgeTE9IjI0IiB4Mj0iNzgiIHkyPSIyODAiIHN0cm9rZT0iI2U4YTBhMCIgc3Ryb2tlLXdpZHRoPSIxLjIiLz4KPGcgZm9udC1mYW1pbHk9IidTZWdvZSBQcmludCcsICdCcmFkbGV5IEhhbmQnLCAnQ2hhbGtib2FyZCBTRScsICdDb21pYyBTYW5zIE1TJywgY3Vyc2l2ZSIgZmlsbD0iIzFmM2E4YSIgdGV4dC1hbmNob3I9Im1pZGRsZSI+Cjx0ZXh0IHg9IjEzMCIgeT0iNzUiIGZvbnQtc2l6ZT0iMTkiIGZvbnQtd2VpZ2h0PSJib2xkIj5hPC90ZXh0Pgo8dGV4dCB4PSIxOTUiIHk9Ijc1IiBmb250LXNpemU9IjE5IiBmb250LXdlaWdodD0iYm9sZCI+YjwvdGV4dD4KPHRleHQgeD0iMjYyIiB5PSI3NSIgZm9udC1zaXplPSIxOSIgZm9udC13ZWlnaHQ9ImJvbGQiPnRlbXA8L3RleHQ+Cjx0ZXh0IHg9IjEzMCIgeT0iOTciIGZvbnQtc2l6ZT0iMTgiPjM8L3RleHQ+Cjx0ZXh0IHg9IjE5NSIgeT0iOTciIGZvbnQtc2l6ZT0iMTgiPuKAkzwvdGV4dD4KPHRleHQgeD0iMjYyIiB5PSI5NyIgZm9udC1zaXplPSIxOCI+4oCTPC90ZXh0Pgo8dGV4dCB4PSIxMzAiIHk9IjExOSIgZm9udC1zaXplPSIxOCI+MzwvdGV4dD4KPHRleHQgeD0iMTk1IiB5PSIxMTkiIGZvbnQtc2l6ZT0iMTgiPjU8L3RleHQ+Cjx0ZXh0IHg9IjI2MiIgeT0iMTE5IiBmb250LXNpemU9IjE4Ij7igJM8L3RleHQ+Cjx0ZXh0IHg9IjEzMCIgeT0iMTQxIiBmb250LXNpemU9IjE4Ij4zPC90ZXh0Pgo8dGV4dCB4PSIxOTUiIHk9IjE0MSIgZm9udC1zaXplPSIxOCI+NTwvdGV4dD4KPHRleHQgeD0iMjYyIiB5PSIxNDEiIGZvbnQtc2l6ZT0iMTgiPjM8L3RleHQ+Cjx0ZXh0IHg9IjEzMCIgeT0iMTYzIiBmb250LXNpemU9IjE4Ij41PC90ZXh0Pgo8dGV4dCB4PSIxOTUiIHk9IjE2MyIgZm9udC1zaXplPSIxOCI+NTwvdGV4dD4KPHRleHQgeD0iMjYyIiB5PSIxNjMiIGZvbnQtc2l6ZT0iMTgiPjM8L3RleHQ+Cjx0ZXh0IHg9IjEzMCIgeT0iMTg1IiBmb250LXNpemU9IjE4Ij41PC90ZXh0Pgo8dGV4dCB4PSIxOTUiIHk9IjE4NSIgZm9udC1zaXplPSIxOCI+MzwvdGV4dD4KPHRleHQgeD0iMjYyIiB5PSIxODUiIGZvbnQtc2l6ZT0iMTgiPjM8L3RleHQ+CjwvZz4KPGcgc3Ryb2tlPSIjMWYzYThhIiBzdHJva2Utd2lkdGg9IjEuNiIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIj4KPHBhdGggZD0iTTEwMCA4MyBRMTkwIDgxIDMwMCA4NCIvPgo8cGF0aCBkPSJNMTYyIDU2IFExNjAgMTUwIDE2MyAxOTQiLz4KPHBhdGggZD0iTTIyOCA1NiBRMjMwIDE1MCAyMjcgMTk0Ii8+CjwvZz4KPC9nPgo8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMDAgMjMyKSByb3RhdGUoLTM4KSI+CjxyZWN0IHg9IjAiIHk9Ii05IiB3aWR0aD0iMTIwIiBoZWlnaHQ9IjE4IiBmaWxsPSIjZjVjMDAwIiBzdHJva2U9IiM4YTZkMDAiIHN0cm9rZS13aWR0aD0iMS4yIi8+CjxsaW5lIHgxPSIwIiB5MT0iLTMiIHgyPSIxMjAiIHkyPSItMyIgc3Ryb2tlPSIjZDlhODAwIiBzdHJva2Utd2lkdGg9IjEiLz4KPGxpbmUgeDE9IjAiIHkxPSIzIiB4Mj0iMTIwIiB5Mj0iMyIgc3Ryb2tlPSIjZDlhODAwIiBzdHJva2Utd2lkdGg9IjEiLz4KPHJlY3QgeD0iMTIwIiB5PSItOSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE4IiBmaWxsPSIjYjhiOGI4IiBzdHJva2U9IiM3NzciIHN0cm9rZS13aWR0aD0iMS4yIi8+CjxyZWN0IHg9IjEzMiIgeT0iLTkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxOCIgcng9IjUiIGZpbGw9IiNmMDhhOWEiIHN0cm9rZT0iI2EyNGE1OCIgc3Ryb2tlLXdpZHRoPSIxLjIiLz4KPHBhdGggZD0iTTAgLTkgTC0yNiAwIEwwIDkgWiIgZmlsbD0iI2U5YzlhMCIgc3Ryb2tlPSIjOGE2ZDRhIiBzdHJva2Utd2lkdGg9IjEuMiIvPgo8cGF0aCBkPSJNLTE3IC0zIEwtMjYgMCBMLTE3IDMgWiIgZmlsbD0iIzMzMyIvPgo8L2c+Cjwvc3ZnPgo=",ZL="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDAgMzAwIj4KPHJlY3Qgd2lkdGg9IjQ0MCIgaGVpZ2h0PSIzMDAiIGZpbGw9IiNmZmZmZmYiLz4KPGcgdHJhbnNmb3JtPSJyb3RhdGUoLTMgMjAwIDE1MCkiPgo8cmVjdCB4PSI0NCIgeT0iMjQiIHdpZHRoPSIyOTAiIGhlaWdodD0iMjU2IiBmaWxsPSIjMDAwIiBvcGFjaXR5PSIwLjEwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1IDYpIi8+CjxyZWN0IHg9IjQ0IiB5PSIyNCIgd2lkdGg9IjI5MCIgaGVpZ2h0PSIyNTYiIGZpbGw9IiNmZmZkZjYiIHN0cm9rZT0iI2M5YzJhZCIgc3Ryb2tlLXdpZHRoPSIxLjIiLz4KPGxpbmUgeDE9IjQ0IiB5MT0iNTgiIHgyPSIzMzQiIHkyPSI1OCIgc3Ryb2tlPSIjYmNkNGVlIiBzdHJva2Utd2lkdGg9IjEiLz4KPGxpbmUgeDE9IjQ0IiB5MT0iODAiIHgyPSIzMzQiIHkyPSI4MCIgc3Ryb2tlPSIjYmNkNGVlIiBzdHJva2Utd2lkdGg9IjEiLz4KPGxpbmUgeDE9IjQ0IiB5MT0iMTAyIiB4Mj0iMzM0IiB5Mj0iMTAyIiBzdHJva2U9IiNiY2Q0ZWUiIHN0cm9rZS13aWR0aD0iMSIvPgo8bGluZSB4MT0iNDQiIHkxPSIxMjQiIHgyPSIzMzQiIHkyPSIxMjQiIHN0cm9rZT0iI2JjZDRlZSIgc3Ryb2tlLXdpZHRoPSIxIi8+CjxsaW5lIHgxPSI0NCIgeTE9IjE0NiIgeDI9IjMzNCIgeTI9IjE0NiIgc3Ryb2tlPSIjYmNkNGVlIiBzdHJva2Utd2lkdGg9IjEiLz4KPGxpbmUgeDE9IjQ0IiB5MT0iMTY4IiB4Mj0iMzM0IiB5Mj0iMTY4IiBzdHJva2U9IiNiY2Q0ZWUiIHN0cm9rZS13aWR0aD0iMSIvPgo8bGluZSB4MT0iNDQiIHkxPSIxOTAiIHgyPSIzMzQiIHkyPSIxOTAiIHN0cm9rZT0iI2JjZDRlZSIgc3Ryb2tlLXdpZHRoPSIxIi8+CjxsaW5lIHgxPSI0NCIgeTE9IjIxMiIgeDI9IjMzNCIgeTI9IjIxMiIgc3Ryb2tlPSIjYmNkNGVlIiBzdHJva2Utd2lkdGg9IjEiLz4KPGxpbmUgeDE9IjQ0IiB5MT0iMjM0IiB4Mj0iMzM0IiB5Mj0iMjM0IiBzdHJva2U9IiNiY2Q0ZWUiIHN0cm9rZS13aWR0aD0iMSIvPgo8bGluZSB4MT0iNDQiIHkxPSIyNTYiIHgyPSIzMzQiIHkyPSIyNTYiIHN0cm9rZT0iI2JjZDRlZSIgc3Ryb2tlLXdpZHRoPSIxIi8+CjxsaW5lIHgxPSI3OCIgeTE9IjI0IiB4Mj0iNzgiIHkyPSIyODAiIHN0cm9rZT0iI2U4YTBhMCIgc3Ryb2tlLXdpZHRoPSIxLjIiLz4KPGcgZm9udC1mYW1pbHk9IidTZWdvZSBQcmludCcsICdCcmFkbGV5IEhhbmQnLCAnQ2hhbGtib2FyZCBTRScsICdDb21pYyBTYW5zIE1TJywgY3Vyc2l2ZSIgZmlsbD0iIzFmM2E4YSIgdGV4dC1hbmNob3I9Im1pZGRsZSI+Cjx0ZXh0IHg9IjEzMCIgeT0iNzUiIGZvbnQtc2l6ZT0iMTkiIGZvbnQtd2VpZ2h0PSJib2xkIj5hPC90ZXh0Pgo8dGV4dCB4PSIxOTUiIHk9Ijc1IiBmb250LXNpemU9IjE5IiBmb250LXdlaWdodD0iYm9sZCI+YjwvdGV4dD4KPHRleHQgeD0iMjYyIiB5PSI3NSIgZm9udC1zaXplPSIxOSIgZm9udC13ZWlnaHQ9ImJvbGQiPmF1eDwvdGV4dD4KPHRleHQgeD0iMTMwIiB5PSI5NyIgZm9udC1zaXplPSIxOCI+MzwvdGV4dD4KPHRleHQgeD0iMTk1IiB5PSI5NyIgZm9udC1zaXplPSIxOCI+4oCTPC90ZXh0Pgo8dGV4dCB4PSIyNjIiIHk9Ijk3IiBmb250LXNpemU9IjE4Ij7igJM8L3RleHQ+Cjx0ZXh0IHg9IjEzMCIgeT0iMTE5IiBmb250LXNpemU9IjE4Ij4zPC90ZXh0Pgo8dGV4dCB4PSIxOTUiIHk9IjExOSIgZm9udC1zaXplPSIxOCI+NTwvdGV4dD4KPHRleHQgeD0iMjYyIiB5PSIxMTkiIGZvbnQtc2l6ZT0iMTgiPuKAkzwvdGV4dD4KPHRleHQgeD0iMTMwIiB5PSIxNDEiIGZvbnQtc2l6ZT0iMTgiPjM8L3RleHQ+Cjx0ZXh0IHg9IjE5NSIgeT0iMTQxIiBmb250LXNpemU9IjE4Ij41PC90ZXh0Pgo8dGV4dCB4PSIyNjIiIHk9IjE0MSIgZm9udC1zaXplPSIxOCI+MzwvdGV4dD4KPHRleHQgeD0iMTMwIiB5PSIxNjMiIGZvbnQtc2l6ZT0iMTgiPjU8L3RleHQ+Cjx0ZXh0IHg9IjE5NSIgeT0iMTYzIiBmb250LXNpemU9IjE4Ij41PC90ZXh0Pgo8dGV4dCB4PSIyNjIiIHk9IjE2MyIgZm9udC1zaXplPSIxOCI+MzwvdGV4dD4KPHRleHQgeD0iMTMwIiB5PSIxODUiIGZvbnQtc2l6ZT0iMTgiPjU8L3RleHQ+Cjx0ZXh0IHg9IjE5NSIgeT0iMTg1IiBmb250LXNpemU9IjE4Ij4zPC90ZXh0Pgo8dGV4dCB4PSIyNjIiIHk9IjE4NSIgZm9udC1zaXplPSIxOCI+MzwvdGV4dD4KPC9nPgo8ZyBzdHJva2U9IiMxZjNhOGEiIHN0cm9rZS13aWR0aD0iMS42IiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiPgo8cGF0aCBkPSJNMTAwIDgzIFExOTAgODEgMzAwIDg0Ii8+CjxwYXRoIGQ9Ik0xNjIgNTYgUTE2MCAxNTAgMTYzIDE5NCIvPgo8cGF0aCBkPSJNMjI4IDU2IFEyMzAgMTUwIDIyNyAxOTQiLz4KPC9nPgo8L2c+CjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMwMCAyMzIpIHJvdGF0ZSgtMzgpIj4KPHJlY3QgeD0iMCIgeT0iLTkiIHdpZHRoPSIxMjAiIGhlaWdodD0iMTgiIGZpbGw9IiNmNWMwMDAiIHN0cm9rZT0iIzhhNmQwMCIgc3Ryb2tlLXdpZHRoPSIxLjIiLz4KPGxpbmUgeDE9IjAiIHkxPSItMyIgeDI9IjEyMCIgeTI9Ii0zIiBzdHJva2U9IiNkOWE4MDAiIHN0cm9rZS13aWR0aD0iMSIvPgo8bGluZSB4MT0iMCIgeTE9IjMiIHgyPSIxMjAiIHkyPSIzIiBzdHJva2U9IiNkOWE4MDAiIHN0cm9rZS13aWR0aD0iMSIvPgo8cmVjdCB4PSIxMjAiIHk9Ii05IiB3aWR0aD0iMTIiIGhlaWdodD0iMTgiIGZpbGw9IiNiOGI4YjgiIHN0cm9rZT0iIzc3NyIgc3Ryb2tlLXdpZHRoPSIxLjIiLz4KPHJlY3QgeD0iMTMyIiB5PSItOSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE4IiByeD0iNSIgZmlsbD0iI2YwOGE5YSIgc3Ryb2tlPSIjYTI0YTU4IiBzdHJva2Utd2lkdGg9IjEuMiIvPgo8cGF0aCBkPSJNMCAtOSBMLTI2IDAgTDAgOSBaIiBmaWxsPSIjZTljOWEwIiBzdHJva2U9IiM4YTZkNGEiIHN0cm9rZS13aWR0aD0iMS4yIi8+CjxwYXRoIGQ9Ik0tMTcgLTMgTC0yNiAwIEwtMTcgMyBaIiBmaWxsPSIjMzMzIi8+CjwvZz4KPC9zdmc+Cg==",LL="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMTUwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8cmVjdCB3aWR0aD0iNDAwIiBoZWlnaHQ9IjE1MCIgZmlsbD0iI2ZmZmZmZiIvPgogIDxyZWN0IHg9IjIwIiB5PSI1MCIgd2lkdGg9IjcwIiBoZWlnaHQ9IjI0IiBmaWxsPSIjZmVlMmUyIi8+PHJlY3QgeD0iMzEwIiB5PSI1MCIgd2lkdGg9IjcwIiBoZWlnaHQ9IjI0IiBmaWxsPSIjZmVlMmUyIi8+CiAgPHJlY3QgeD0iOTAiIHk9IjUwIiB3aWR0aD0iMjIwIiBoZWlnaHQ9IjI0IiBmaWxsPSIjZGNmY2U3Ii8+CiAgPGxpbmUgeDE9IjIwIiB5MT0iNzQiIHgyPSIzODAiIHkyPSI3NCIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8bGluZSB4MT0iNDYiIHkxPSI2OCIgeDI9IjQ2IiB5Mj0iODAiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIyIi8+PHRleHQgeD0iNDYiIHk9Ijk4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj4wPC90ZXh0PgogIDxsaW5lIHgxPSI5MCIgeTE9IjY4IiB4Mj0iOTAiIHkyPSI4MCIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz48dGV4dCB4PSI5MCIgeT0iOTgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPjE8L3RleHQ+CiAgPGxpbmUgeDE9IjEzNCIgeTE9IjY4IiB4Mj0iMTM0IiB5Mj0iODAiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIyIi8+PHRleHQgeD0iMTM0IiB5PSI5OCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+MjwvdGV4dD4KICA8bGluZSB4MT0iMTc4IiB5MT0iNjgiIHgyPSIxNzgiIHkyPSI4MCIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz48dGV4dCB4PSIxNzgiIHk9Ijk4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj4zPC90ZXh0PgogIDxsaW5lIHgxPSIyMjIiIHkxPSI2OCIgeDI9IjIyMiIgeTI9IjgwIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMiIvPjx0ZXh0IHg9IjIyMiIgeT0iOTgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPjQ8L3RleHQ+CiAgPGxpbmUgeDE9IjI2NiIgeTE9IjY4IiB4Mj0iMjY2IiB5Mj0iODAiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIyIi8+PHRleHQgeD0iMjY2IiB5PSI5OCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+NTwvdGV4dD4KICA8bGluZSB4MT0iMzEwIiB5MT0iNjgiIHgyPSIzMTAiIHkyPSI4MCIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz48dGV4dCB4PSIzMTAiIHk9Ijk4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj42PC90ZXh0PgogIDxsaW5lIHgxPSIzNTQiIHkxPSI2OCIgeDI9IjM1NCIgeTI9IjgwIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMiIvPjx0ZXh0IHg9IjM1NCIgeT0iOTgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPjc8L3RleHQ+CiAgPGNpcmNsZSBjeD0iOTAiIGN5PSI3NCIgcj0iNiIgZmlsbD0iIzE1ODAzZCIvPjxjaXJjbGUgY3g9IjMxMCIgY3k9Ijc0IiByPSI2IiBmaWxsPSIjMTU4MDNkIi8+CiAgPHRleHQgeD0iMjAwIiB5PSI0MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzE1ODAzZCIgZm9udC13ZWlnaHQ9IjYwMCI+Z8O8bHRpZzwvdGV4dD4KICA8dGV4dCB4PSI0MCIgeT0iNDAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiNiOTFjMWMiIGZvbnQtd2VpZ2h0PSI2MDAiPnVuZ8O8bHRpZzwvdGV4dD48dGV4dCB4PSIzNjAiIHk9IjQwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjYjkxYzFjIiBmb250LXdlaWdodD0iNjAwIj51bmfDvGx0aWc8L3RleHQ+CiAgPGcgZm9udC1mYW1pbHk9InVpLW1vbm9zcGFjZSwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2UiIGZvbnQtc2l6ZT0iMTMiIHRleHQtYW5jaG9yPSJtaWRkbGUiPgogICAgPHRleHQgeD0iMjAwIiB5PSIxMjQiIGZpbGw9IiMxNTgwM2QiPm5vdGUgJmd0Oz0gMSAmYW1wOyZhbXA7IG5vdGUgJmx0Oz0gNjwvdGV4dD4KICAgIDx0ZXh0IHg9IjIwMCIgeT0iMTQyIiBmaWxsPSIjYjkxYzFjIj5ub3RlICZsdDsgMSB8fCBub3RlICZndDsgNjwvdGV4dD4KICA8L2c+Cjwvc3ZnPgo=",WL="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDAgMTkwIiBmb250LWZhbWlseT0idWktbW9ub3NwYWNlLCBNZW5sbywgQ29uc29sYXMsIG1vbm9zcGFjZSIgZm9udC1zaXplPSIxNSIgZmlsbD0iIzFjMWMxZSI+CiAgPHJlY3Qgd2lkdGg9IjQ0MCIgaGVpZ2h0PSIxOTAiIGZpbGw9IiNmZmZmZmYiLz4KICA8cmVjdCB4PSIyMCIgeT0iMTQiIHdpZHRoPSI4MCIgaGVpZ2h0PSIzMiIgZmlsbD0iI2YyZjJmNyIgc3Ryb2tlPSIjOGU4ZTkzIi8+PHRleHQgeD0iNjAuMCIgeT0iMzUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSI3MDAiPmE8L3RleHQ+CiAgPHJlY3QgeD0iMTAwIiB5PSIxNCIgd2lkdGg9IjgwIiBoZWlnaHQ9IjMyIiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiM4ZThlOTMiLz48dGV4dCB4PSIxNDAuMCIgeT0iMzUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSI3MDAiPmI8L3RleHQ+CiAgPHJlY3QgeD0iMTgwIiB5PSIxNCIgd2lkdGg9IjgwIiBoZWlnaHQ9IjMyIiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiM4ZThlOTMiLz48dGV4dCB4PSIyMjAuMCIgeT0iMzUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSI3MDAiPmEgJmFtcDsmYW1wOyBiPC90ZXh0PgogIDxyZWN0IHg9IjI2MCIgeT0iMTQiIHdpZHRoPSI4MCIgaGVpZ2h0PSIzMiIgZmlsbD0iI2YyZjJmNyIgc3Ryb2tlPSIjOGU4ZTkzIi8+PHRleHQgeD0iMzAwLjAiIHk9IjM1IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iNzAwIj5hIHx8IGI8L3RleHQ+CiAgPHJlY3QgeD0iMzQwIiB5PSIxNCIgd2lkdGg9IjgwIiBoZWlnaHQ9IjMyIiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiM4ZThlOTMiLz48dGV4dCB4PSIzODAuMCIgeT0iMzUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSI3MDAiPiFhPC90ZXh0PgogIDxyZWN0IHg9IjIwIiB5PSI0NiIgd2lkdGg9IjgwIiBoZWlnaHQ9IjMyIiBmaWxsPSIjZGNmY2U3IiBzdHJva2U9IiM4ZThlOTMiLz48dGV4dCB4PSI2MC4wIiB5PSI2NyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzE1ODAzZCI+dHJ1ZTwvdGV4dD4KICA8cmVjdCB4PSIxMDAiIHk9IjQ2IiB3aWR0aD0iODAiIGhlaWdodD0iMzIiIGZpbGw9IiNkY2ZjZTciIHN0cm9rZT0iIzhlOGU5MyIvPjx0ZXh0IHg9IjE0MC4wIiB5PSI2NyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzE1ODAzZCI+dHJ1ZTwvdGV4dD4KICA8cmVjdCB4PSIxODAiIHk9IjQ2IiB3aWR0aD0iODAiIGhlaWdodD0iMzIiIGZpbGw9IiNkY2ZjZTciIHN0cm9rZT0iIzhlOGU5MyIvPjx0ZXh0IHg9IjIyMC4wIiB5PSI2NyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzE1ODAzZCI+dHJ1ZTwvdGV4dD4KICA8cmVjdCB4PSIyNjAiIHk9IjQ2IiB3aWR0aD0iODAiIGhlaWdodD0iMzIiIGZpbGw9IiNkY2ZjZTciIHN0cm9rZT0iIzhlOGU5MyIvPjx0ZXh0IHg9IjMwMC4wIiB5PSI2NyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzE1ODAzZCI+dHJ1ZTwvdGV4dD4KICA8cmVjdCB4PSIzNDAiIHk9IjQ2IiB3aWR0aD0iODAiIGhlaWdodD0iMzIiIGZpbGw9IiNmZWUyZTIiIHN0cm9rZT0iIzhlOGU5MyIvPjx0ZXh0IHg9IjM4MC4wIiB5PSI2NyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iI2I5MWMxYyI+ZmFsc2U8L3RleHQ+CiAgPHJlY3QgeD0iMjAiIHk9Ijc4IiB3aWR0aD0iODAiIGhlaWdodD0iMzIiIGZpbGw9IiNkY2ZjZTciIHN0cm9rZT0iIzhlOGU5MyIvPjx0ZXh0IHg9IjYwLjAiIHk9Ijk5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjMTU4MDNkIj50cnVlPC90ZXh0PgogIDxyZWN0IHg9IjEwMCIgeT0iNzgiIHdpZHRoPSI4MCIgaGVpZ2h0PSIzMiIgZmlsbD0iI2ZlZTJlMiIgc3Ryb2tlPSIjOGU4ZTkzIi8+PHRleHQgeD0iMTQwLjAiIHk9Ijk5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjYjkxYzFjIj5mYWxzZTwvdGV4dD4KICA8cmVjdCB4PSIxODAiIHk9Ijc4IiB3aWR0aD0iODAiIGhlaWdodD0iMzIiIGZpbGw9IiNmZWUyZTIiIHN0cm9rZT0iIzhlOGU5MyIvPjx0ZXh0IHg9IjIyMC4wIiB5PSI5OSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iI2I5MWMxYyI+ZmFsc2U8L3RleHQ+CiAgPHJlY3QgeD0iMjYwIiB5PSI3OCIgd2lkdGg9IjgwIiBoZWlnaHQ9IjMyIiBmaWxsPSIjZGNmY2U3IiBzdHJva2U9IiM4ZThlOTMiLz48dGV4dCB4PSIzMDAuMCIgeT0iOTkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMxNTgwM2QiPnRydWU8L3RleHQ+CiAgPHJlY3QgeD0iMzQwIiB5PSI3OCIgd2lkdGg9IjgwIiBoZWlnaHQ9IjMyIiBmaWxsPSIjZmVlMmUyIiBzdHJva2U9IiM4ZThlOTMiLz48dGV4dCB4PSIzODAuMCIgeT0iOTkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiNiOTFjMWMiPmZhbHNlPC90ZXh0PgogIDxyZWN0IHg9IjIwIiB5PSIxMTAiIHdpZHRoPSI4MCIgaGVpZ2h0PSIzMiIgZmlsbD0iI2ZlZTJlMiIgc3Ryb2tlPSIjOGU4ZTkzIi8+PHRleHQgeD0iNjAuMCIgeT0iMTMxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjYjkxYzFjIj5mYWxzZTwvdGV4dD4KICA8cmVjdCB4PSIxMDAiIHk9IjExMCIgd2lkdGg9IjgwIiBoZWlnaHQ9IjMyIiBmaWxsPSIjZGNmY2U3IiBzdHJva2U9IiM4ZThlOTMiLz48dGV4dCB4PSIxNDAuMCIgeT0iMTMxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjMTU4MDNkIj50cnVlPC90ZXh0PgogIDxyZWN0IHg9IjE4MCIgeT0iMTEwIiB3aWR0aD0iODAiIGhlaWdodD0iMzIiIGZpbGw9IiNmZWUyZTIiIHN0cm9rZT0iIzhlOGU5MyIvPjx0ZXh0IHg9IjIyMC4wIiB5PSIxMzEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiNiOTFjMWMiPmZhbHNlPC90ZXh0PgogIDxyZWN0IHg9IjI2MCIgeT0iMTEwIiB3aWR0aD0iODAiIGhlaWdodD0iMzIiIGZpbGw9IiNkY2ZjZTciIHN0cm9rZT0iIzhlOGU5MyIvPjx0ZXh0IHg9IjMwMC4wIiB5PSIxMzEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMxNTgwM2QiPnRydWU8L3RleHQ+CiAgPHJlY3QgeD0iMzQwIiB5PSIxMTAiIHdpZHRoPSI4MCIgaGVpZ2h0PSIzMiIgZmlsbD0iI2RjZmNlNyIgc3Ryb2tlPSIjOGU4ZTkzIi8+PHRleHQgeD0iMzgwLjAiIHk9IjEzMSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzE1ODAzZCI+dHJ1ZTwvdGV4dD4KICA8cmVjdCB4PSIyMCIgeT0iMTQyIiB3aWR0aD0iODAiIGhlaWdodD0iMzIiIGZpbGw9IiNmZWUyZTIiIHN0cm9rZT0iIzhlOGU5MyIvPjx0ZXh0IHg9IjYwLjAiIHk9IjE2MyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iI2I5MWMxYyI+ZmFsc2U8L3RleHQ+CiAgPHJlY3QgeD0iMTAwIiB5PSIxNDIiIHdpZHRoPSI4MCIgaGVpZ2h0PSIzMiIgZmlsbD0iI2ZlZTJlMiIgc3Ryb2tlPSIjOGU4ZTkzIi8+PHRleHQgeD0iMTQwLjAiIHk9IjE2MyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iI2I5MWMxYyI+ZmFsc2U8L3RleHQ+CiAgPHJlY3QgeD0iMTgwIiB5PSIxNDIiIHdpZHRoPSI4MCIgaGVpZ2h0PSIzMiIgZmlsbD0iI2ZlZTJlMiIgc3Ryb2tlPSIjOGU4ZTkzIi8+PHRleHQgeD0iMjIwLjAiIHk9IjE2MyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iI2I5MWMxYyI+ZmFsc2U8L3RleHQ+CiAgPHJlY3QgeD0iMjYwIiB5PSIxNDIiIHdpZHRoPSI4MCIgaGVpZ2h0PSIzMiIgZmlsbD0iI2ZlZTJlMiIgc3Ryb2tlPSIjOGU4ZTkzIi8+PHRleHQgeD0iMzAwLjAiIHk9IjE2MyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iI2I5MWMxYyI+ZmFsc2U8L3RleHQ+CiAgPHJlY3QgeD0iMzQwIiB5PSIxNDIiIHdpZHRoPSI4MCIgaGVpZ2h0PSIzMiIgZmlsbD0iI2RjZmNlNyIgc3Ryb2tlPSIjOGU4ZTkzIi8+PHRleHQgeD0iMzgwLjAiIHk9IjE2MyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzE1ODAzZCI+dHJ1ZTwvdGV4dD4KICA8bGluZSB4MT0iMTgwIiB5MT0iMTQiIHgyPSIxODAiIHkyPSIxNzQiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIzIi8+Cjwvc3ZnPgo=",EL="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjMwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMjMwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHRleHQgeD0iMjAiIHk9IjI0IiBmb250LXdlaWdodD0iNjAwIj5BYmxhdWYgZGVyIFdoaWxlLVNjaGxlaWZlPC90ZXh0PgogIDxyZWN0IHg9IjEyMCIgeT0iNDQiIHdpZHRoPSIxNjAiIGhlaWdodD0iNDAiIHJ4PSIyMCIgZmlsbD0iI2ZlZjNjNyIgc3Ryb2tlPSIjYjQ1MzA5IiBzdHJva2Utd2lkdGg9IjIiLz4KICA8dGV4dCB4PSIyMDAiIHk9IjY5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj7ikaAgQmVkaW5ndW5nIHByw7xmZW48L3RleHQ+CiAgPHJlY3QgeD0iMTIwIiB5PSIxMjgiIHdpZHRoPSIxNjAiIGhlaWdodD0iNDAiIHJ4PSI2IiBmaWxsPSIjZGJlYWZlIiBzdHJva2U9IiMxZDRlZDgiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjIwMCIgeT0iMTUzIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj7ikaEgSW5oYWx0IGF1c2bDvGhyZW48L3RleHQ+CiAgPGcgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNhKSI+CiAgICA8bGluZSB4MT0iMjAwIiB5MT0iODQiIHgyPSIyMDAiIHkyPSIxMjYiLz4KICAgIDxwYXRoIGQ9Ik0xMjAgMTQ4IEM4MCAxNDgsIDgwIDY0LCAxMTggNjQiLz4KICAgIDxwYXRoIGQ9Ik0yODAgNjQgTDM0MCA2NCBMMzQwIDIwMCBMMjgyIDIwMCIvPgogIDwvZz4KICA8dGV4dCB4PSIyMDgiIHk9IjExMCIgZmlsbD0iIzE1ODAzZCIgZm9udC13ZWlnaHQ9IjYwMCI+dHJ1ZTwvdGV4dD4KICA8dGV4dCB4PSIzOCIgeT0iMTEwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj53aWVkZXI8L3RleHQ+CiAgPHRleHQgeD0iMzgiIHk9IjEyNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzZlNmU3MyI+bmFjaCBvYmVuPC90ZXh0PgogIDx0ZXh0IHg9IjM0OCIgeT0iMTM0IiBmaWxsPSIjYjkxYzFjIiBmb250LXdlaWdodD0iNjAwIj5mYWxzZTwvdGV4dD4KICA8dGV4dCB4PSIyNzYiIHk9IjIwNSIgdGV4dC1hbmNob3I9ImVuZCI+d2VpdGVyIHVudGVyIGRlciBTY2hsZWlmZTwvdGV4dD4KPC9zdmc+Cg==",NL="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjMwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMjMwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHRleHQgeD0iMTAwIiB5PSIyMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+a29wZmdlc3RldWVydCAoV2hpbGUpPC90ZXh0PgogIDx0ZXh0IHg9IjMwMCIgeT0iMjIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSI2MDAiPmZ1w59nZXN0ZXVlcnQgKERvLXdoaWxlKTwvdGV4dD4KICA8bGluZSB4MT0iMjAwIiB5MT0iMTAiIHgyPSIyMDAiIHkyPSIyMjAiIHN0cm9rZT0iI2QxZDFkNiIvPgogIDxyZWN0IHg9IjM1IiB5PSI0NCIgd2lkdGg9IjEzMCIgaGVpZ2h0PSIzNiIgcng9IjE4IiBmaWxsPSIjZmVmM2M3IiBzdHJva2U9IiNiNDUzMDkiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjEwMCIgeT0iNjciIHRleHQtYW5jaG9yPSJtaWRkbGUiPuKRoCBCZWRpbmd1bmc8L3RleHQ+CiAgPHJlY3QgeD0iMzUiIHk9IjEyNCIgd2lkdGg9IjEzMCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNkYmVhZmUiIHN0cm9rZT0iIzFkNGVkOCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMTAwIiB5PSIxNDciIHRleHQtYW5jaG9yPSJtaWRkbGUiPuKRoSBJbmhhbHQ8L3RleHQ+CiAgPHJlY3QgeD0iMjM1IiB5PSI0NCIgd2lkdGg9IjEzMCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNkYmVhZmUiIHN0cm9rZT0iIzFkNGVkOCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMzAwIiB5PSI2NyIgdGV4dC1hbmNob3I9Im1pZGRsZSI+4pGgIEluaGFsdDwvdGV4dD4KICA8cmVjdCB4PSIyMzUiIHk9IjEyNCIgd2lkdGg9IjEzMCIgaGVpZ2h0PSIzNiIgcng9IjE4IiBmaWxsPSIjZmVmM2M3IiBzdHJva2U9IiNiNDUzMDkiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjMwMCIgeT0iMTQ3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj7ikaEgQmVkaW5ndW5nPC90ZXh0PgogIDxnIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIxLjYiIG1hcmtlci1lbmQ9InVybCgjYSkiPgogICAgPGxpbmUgeDE9IjEwMCIgeTE9IjgwIiB4Mj0iMTAwIiB5Mj0iMTIyIi8+CiAgICA8cGF0aCBkPSJNMzUgMTQyIEM4IDE0MiwgOCA2MiwgMzMgNjIiLz4KICAgIDxsaW5lIHgxPSIzMDAiIHkxPSI4MCIgeDI9IjMwMCIgeTI9IjEyMiIvPgogICAgPHBhdGggZD0iTTM2NSAxNDIgQzM5MiAxNDIsIDM5MiA2MiwgMzY3IDYyIi8+CiAgPC9nPgogIDx0ZXh0IHg9IjEwNiIgeT0iMTA2IiBmaWxsPSIjMTU4MDNkIiBmb250LXdlaWdodD0iNjAwIj50cnVlPC90ZXh0PgogIDx0ZXh0IHg9IjM4MCIgeT0iMTA2IiB0ZXh0LWFuY2hvcj0iZW5kIiBmaWxsPSIjMTU4MDNkIiBmb250LXdlaWdodD0iNjAwIj50cnVlPC90ZXh0PgogIDx0ZXh0IHg9IjEwMCIgeT0iMTkwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj5Jc3QgZGllIEJlZGluZ3VuZyBnbGVpY2ggZmFsc2UsPC90ZXh0PgogIDx0ZXh0IHg9IjEwMCIgeT0iMjA2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj5sw6R1ZnQgZGVyIEluaGFsdCA8dHNwYW4gZm9udC13ZWlnaHQ9IjcwMCIgZmlsbD0iIzFjMWMxZSI+bmllPC90c3Bhbj4uPC90ZXh0PgogIDx0ZXh0IHg9IjMwMCIgeT0iMTkwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj5EZXIgSW5oYWx0IGzDpHVmdCBpbW1lcjwvdGV4dD4KICA8dGV4dCB4PSIzMDAiIHk9IjIwNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzZlNmU3MyI+PHRzcGFuIGZvbnQtd2VpZ2h0PSI3MDAiIGZpbGw9IiMxYzFjMWUiPm1pbmRlc3RlbnMgZWlubWFsPC90c3Bhbj4uPC90ZXh0Pgo8L3N2Zz4K",FL="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjUwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMjUwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHJlY3QgeD0iMTIwIiB5PSIxNCIgd2lkdGg9IjE2MCIgaGVpZ2h0PSIzNCIgcng9IjYiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjAwIiB5PSIzNiIgdGV4dC1hbmNob3I9Im1pZGRsZSI+4pGgIFN0YXJ0IDx0c3BhbiBmaWxsPSIjNmU2ZTczIj4obnVyIGVpbm1hbCk8L3RzcGFuPjwvdGV4dD4KICA8cmVjdCB4PSIxMjAiIHk9Ijc2IiB3aWR0aD0iMTYwIiBoZWlnaHQ9IjM0IiByeD0iMTciIGZpbGw9IiNmZWYzYzciIHN0cm9rZT0iI2I0NTMwOSIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjAwIiB5PSI5OCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+4pGhIEJlZGluZ3VuZyBwcsO8ZmVuPC90ZXh0PgogIDxyZWN0IHg9IjEyMCIgeT0iMTM4IiB3aWR0aD0iMTYwIiBoZWlnaHQ9IjM0IiByeD0iNiIgZmlsbD0iI2RiZWFmZSIgc3Ryb2tlPSIjMWQ0ZWQ4IiBzdHJva2Utd2lkdGg9IjIiLz4KICA8dGV4dCB4PSIyMDAiIHk9IjE2MCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+4pGiIEluaGFsdCBhdXNmw7xocmVuPC90ZXh0PgogIDxyZWN0IHg9IjEyMCIgeT0iMjAwIiB3aWR0aD0iMTYwIiBoZWlnaHQ9IjM0IiByeD0iNiIgZmlsbD0iI2RjZmNlNyIgc3Ryb2tlPSIjMTU4MDNkIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8dGV4dCB4PSIyMDAiIHk9IjIyMiIgdGV4dC1hbmNob3I9Im1pZGRsZSI+4pGjIFNjaHJpdHQsIHouIEIuIGkrKzwvdGV4dD4KICA8ZyBmaWxsPSJub25lIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI2EpIj4KICAgIDxsaW5lIHgxPSIyMDAiIHkxPSI0OCIgeDI9IjIwMCIgeTI9Ijc0Ii8+CiAgICA8bGluZSB4MT0iMjAwIiB5MT0iMTEwIiB4Mj0iMjAwIiB5Mj0iMTM2Ii8+CiAgICA8bGluZSB4MT0iMjAwIiB5MT0iMTcyIiB4Mj0iMjAwIiB5Mj0iMTk4Ii8+CiAgICA8cGF0aCBkPSJNMTIwIDIxNyBDNjAgMjE3LCA2MCA5MywgMTE4IDkzIi8+CiAgICA8cGF0aCBkPSJNMjgwIDkzIEwzMzAgOTMiLz4KICA8L2c+CiAgPHRleHQgeD0iMjA4IiB5PSIxMjkiIGZpbGw9IiMxNTgwM2QiIGZvbnQtd2VpZ2h0PSI2MDAiPnRydWU8L3RleHQ+CiAgPHRleHQgeD0iNDgiIHk9IjE2MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzZlNmU3MyI+enVyw7xjazwvdGV4dD4KICA8dGV4dCB4PSI0OCIgeT0iMTc2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj56dSDikaE8L3RleHQ+CiAgPHRleHQgeD0iMzAwIiB5PSI4NCIgZmlsbD0iI2I5MWMxYyIgZm9udC13ZWlnaHQ9IjYwMCI+ZmFsc2U8L3RleHQ+CiAgPHRleHQgeD0iMzM2IiB5PSI5OCI+ZmVydGlnPC90ZXh0Pgo8L3N2Zz4K",RL=""+new URL("l12-while-zu-for-Cu-8sS5S.svg",import.meta.url).href,JL=""+new URL("l13-verschachtelt-tabelle-CmsFvxQ5.svg",import.meta.url).href,GL="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMTkwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMDA3YWZmIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMTkwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHRleHQgeD0iMjAiIHk9IjI0IiBmb250LWZhbWlseT0idWktbW9ub3NwYWNlLCBNZW5sbywgQ29uc29sYXMsIG1vbm9zcGFjZSIgZm9udC1zaXplPSIxNCI+aW50W10gemFobGVuID0gezIsIDQsIDYsIDgsIDEwfTwvdGV4dD4KICA8dGV4dCB4PSIyMCIgeT0iNTQiIGZpbGw9IiM2ZTZlNzMiIGZvbnQtc2l6ZT0iMTIiPkluZGV4PC90ZXh0PgogIDx0ZXh0IHg9IjkwIiB5PSI1NCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzAwN2FmZiIgZm9udC13ZWlnaHQ9IjcwMCI+MDwvdGV4dD48cmVjdCB4PSI2MCIgeT0iNjIiIHdpZHRoPSI2MCIgaGVpZ2h0PSI0NiIgZmlsbD0iI2YyZjJmNyIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz48dGV4dCB4PSI5MCIgeT0iOTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTgiIGZvbnQtd2VpZ2h0PSI2MDAiPjI8L3RleHQ+CiAgPHRleHQgeD0iMTUwIiB5PSI1NCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzAwN2FmZiIgZm9udC13ZWlnaHQ9IjcwMCI+MTwvdGV4dD48cmVjdCB4PSIxMjAiIHk9IjYyIiB3aWR0aD0iNjAiIGhlaWdodD0iNDYiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIyIi8+PHRleHQgeD0iMTUwIiB5PSI5MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxOCIgZm9udC13ZWlnaHQ9IjYwMCI+NDwvdGV4dD4KICA8dGV4dCB4PSIyMTAiIHk9IjU0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjMDA3YWZmIiBmb250LXdlaWdodD0iNzAwIj4yPC90ZXh0PjxyZWN0IHg9IjE4MCIgeT0iNjIiIHdpZHRoPSI2MCIgaGVpZ2h0PSI0NiIgZmlsbD0iI2YyZjJmNyIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz48dGV4dCB4PSIyMTAiIHk9IjkyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE4IiBmb250LXdlaWdodD0iNjAwIj42PC90ZXh0PgogIDx0ZXh0IHg9IjI3MCIgeT0iNTQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMwMDdhZmYiIGZvbnQtd2VpZ2h0PSI3MDAiPjM8L3RleHQ+PHJlY3QgeD0iMjQwIiB5PSI2MiIgd2lkdGg9IjYwIiBoZWlnaHQ9IjQ2IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMiIvPjx0ZXh0IHg9IjI3MCIgeT0iOTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTgiIGZvbnQtd2VpZ2h0PSI2MDAiPjg8L3RleHQ+CiAgPHRleHQgeD0iMzMwIiB5PSI1NCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzAwN2FmZiIgZm9udC13ZWlnaHQ9IjcwMCI+NDwvdGV4dD48cmVjdCB4PSIzMDAiIHk9IjYyIiB3aWR0aD0iNjAiIGhlaWdodD0iNDYiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIyIi8+PHRleHQgeD0iMzMwIiB5PSI5MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxOCIgZm9udC13ZWlnaHQ9IjYwMCI+MTA8L3RleHQ+CiAgPHRleHQgeD0iMjAiIHk9IjkwIiBmaWxsPSIjNmU2ZTczIiBmb250LXNpemU9IjEyIj5XZXJ0PC90ZXh0PgogIDxnIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwN2FmZiIgc3Ryb2tlLXdpZHRoPSIxLjgiIG1hcmtlci1lbmQ9InVybCgjYSkiPjxsaW5lIHgxPSI5MCIgeTE9IjE0MCIgeDI9IjkwIiB5Mj0iMTEyIi8+PGxpbmUgeDE9IjMzMCIgeTE9IjE0MCIgeDI9IjMzMCIgeTI9IjExMiIvPjwvZz4KICA8ZyBmb250LWZhbWlseT0idWktbW9ub3NwYWNlLCBNZW5sbywgQ29uc29sYXMsIG1vbm9zcGFjZSIgZm9udC1zaXplPSIxMyIgdGV4dC1hbmNob3I9Im1pZGRsZSI+PHRleHQgeD0iOTAiIHk9IjE1NiI+emFobGVuWzBdIGlzdCAyPC90ZXh0Pjx0ZXh0IHg9IjMzMCIgeT0iMTU2Ij56YWhsZW5bNF0gaXN0IDEwPC90ZXh0PjwvZz4KICA8dGV4dCB4PSIyMDAiIHk9IjE4MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzZlNmU3MyI+NSBGw6RjaGVyLCBnZXrDpGhsdCB3aXJkIGFiIDA6IGRlciBsZXR6dGUgSW5kZXggaXN0IDQuPC90ZXh0Pgo8L3N2Zz4K",HL="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDAgMjkwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0NDAiIGhlaWdodD0iMjkwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHJlY3QgeD0iMTEwIiB5PSIxMiIgd2lkdGg9IjIyMCIgaGVpZ2h0PSI0OCIgcng9IjYiIGZpbGw9IiNkYmVhZmUiIHN0cm9rZT0iIzFkNGVkOCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjIwIiB5PSIzMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1mYW1pbHk9InVpLW1vbm9zcGFjZSwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2UiIGZvbnQtd2VpZ2h0PSI2MDAiPnJlY2huZXIuY3BwPC90ZXh0PgogIDx0ZXh0IHg9IjIyMCIgeT0iNTEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiMzYTNhM2MiPlF1ZWxsY29kZSBpbiBDKys8L3RleHQ+CiAgPGcgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNhKSI+CiAgICA8bGluZSB4MT0iMjIwIiB5MT0iNjAiIHgyPSI4MCIgeTI9Ijk0Ii8+CiAgICA8bGluZSB4MT0iODAiIHkxPSIxMjYiIHgyPSI4MCIgeTI9IjE1NiIvPgogICAgPGxpbmUgeDE9IjIyMCIgeTE9IjYwIiB4Mj0iMjIwIiB5Mj0iOTQiLz4KICAgIDxsaW5lIHgxPSIyMjAiIHkxPSIxMjYiIHgyPSIyMjAiIHkyPSIxNTYiLz4KICAgIDxsaW5lIHgxPSIyMjAiIHkxPSI2MCIgeDI9IjM2MCIgeTI9Ijk0Ii8+CiAgICA8bGluZSB4MT0iMzYwIiB5MT0iMTI2IiB4Mj0iMzYwIiB5Mj0iMTU2Ii8+CiAgPC9nPgogIDxyZWN0IHg9IjE4IiB5PSI5NiIgd2lkdGg9IjEyNCIgaGVpZ2h0PSIzMCIgcng9IjE1IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiM2ZTZlNzMiIHN0cm9rZS13aWR0aD0iMS41Ii8+CiAgPHRleHQgeD0iODAiIHk9IjExNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyI+Q29tcGlsZXI8L3RleHQ+CiAgPHJlY3QgeD0iMTgiIHk9IjE1OCIgd2lkdGg9IjEyNCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNmZWUyZTIiIHN0cm9rZT0iI2I5MWMxYyIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iODAiIHk9IjE4MSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+TWFzY2hpbmVuY29kZTwvdGV4dD4KICA8cmVjdCB4PSIxOCIgeT0iMTk0IiB3aWR0aD0iMTI0IiBoZWlnaHQ9IjM2IiByeD0iNiIgZmlsbD0iI2YyZjJmNyIgc3Ryb2tlPSIjNmU2ZTczIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8dGV4dCB4PSI4MCIgeT0iMjE3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5XaW5kb3dzPC90ZXh0PgogIDxyZWN0IHg9IjE1OCIgeT0iOTYiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzAiIHJ4PSIxNSIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjNmU2ZTczIiBzdHJva2Utd2lkdGg9IjEuNSIvPgogIDx0ZXh0IHg9IjIyMCIgeT0iMTE2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIj5Db21waWxlcjwvdGV4dD4KICA8cmVjdCB4PSIxNTgiIHk9IjE1OCIgd2lkdGg9IjEyNCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNmZWUyZTIiIHN0cm9rZT0iI2I5MWMxYyIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjIwIiB5PSIxODEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSI2MDAiPk1hc2NoaW5lbmNvZGU8L3RleHQ+CiAgPHJlY3QgeD0iMTU4IiB5PSIxOTQiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiM2ZTZlNzMiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjIyMCIgeT0iMjE3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5tYWNPUzwvdGV4dD4KICA8cmVjdCB4PSIyOTgiIHk9Ijk2IiB3aWR0aD0iMTI0IiBoZWlnaHQ9IjMwIiByeD0iMTUiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KICA8dGV4dCB4PSIzNjAiIHk9IjExNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyI+Q29tcGlsZXI8L3RleHQ+CiAgPHJlY3QgeD0iMjk4IiB5PSIxNTgiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZmVlMmUyIiBzdHJva2U9IiNiOTFjMWMiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjM2MCIgeT0iMTgxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iNjAwIj5NYXNjaGluZW5jb2RlPC90ZXh0PgogIDxyZWN0IHg9IjI5OCIgeT0iMTk0IiB3aWR0aD0iMTI0IiBoZWlnaHQ9IjM2IiByeD0iNiIgZmlsbD0iI2YyZjJmNyIgc3Ryb2tlPSIjNmU2ZTczIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8dGV4dCB4PSIzNjAiIHk9IjIxNyIgdGV4dC1hbmNob3I9Im1pZGRsZSI+TGludXg8L3RleHQ+CiAgPHRleHQgeD0iMjIwIiB5PSIyNTgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc3R5bGU9Iml0YWxpYyI+RsO8ciBqZWRlcyBTeXN0ZW08L3RleHQ+CiAgPHRleHQgeD0iMjIwIiB5PSIyNzgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc3R5bGU9Iml0YWxpYyI+bmV1IMO8YmVyc2V0emVuPC90ZXh0Pgo8L3N2Zz4K",VL="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDAgMzMwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0NDAiIGhlaWdodD0iMzMwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHJlY3QgeD0iMTEwIiB5PSIxMiIgd2lkdGg9IjIyMCIgaGVpZ2h0PSI0OCIgcng9IjYiIGZpbGw9IiNkYmVhZmUiIHN0cm9rZT0iIzFkNGVkOCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjIwIiB5PSIzMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1mYW1pbHk9InVpLW1vbm9zcGFjZSwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2UiIGZvbnQtd2VpZ2h0PSI2MDAiPkVpbm1hbGVpbnMuamF2YTwvdGV4dD4KICA8dGV4dCB4PSIyMjAiIHk9IjUxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIiBmaWxsPSIjM2EzYTNjIj5RdWVsbGNvZGUsIGbDvHIgTWVuc2NoZW48L3RleHQ+CiAgPHJlY3QgeD0iMTEwIiB5PSIxMDQiIHdpZHRoPSIyMjAiIGhlaWdodD0iNDgiIHJ4PSI2IiBmaWxsPSIjZmVmM2M3IiBzdHJva2U9IiNiNDUzMDkiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjIyMCIgeT0iMTI0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LWZhbWlseT0idWktbW9ub3NwYWNlLCBNZW5sbywgQ29uc29sYXMsIG1vbm9zcGFjZSIgZm9udC13ZWlnaHQ9IjYwMCI+RWlubWFsZWlucy5jbGFzczwvdGV4dD4KICA8dGV4dCB4PSIyMjAiIHk9IjE0MyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyIgZmlsbD0iIzNhM2EzYyI+Qnl0ZWNvZGU6IENBIEZFIEJBIEJFIOKApjwvdGV4dD4KICA8ZyBmaWxsPSJub25lIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI2EpIj4KICAgIDxsaW5lIHgxPSIyMjAiIHkxPSI2MCIgeDI9IjIyMCIgeTI9IjEwMiIvPgogICAgPGxpbmUgeDE9IjIyMCIgeTE9IjE1MiIgeDI9IjgwIiB5Mj0iMTk2Ii8+CiAgICA8bGluZSB4MT0iMjIwIiB5MT0iMTUyIiB4Mj0iMjIwIiB5Mj0iMTk2Ii8+CiAgICA8bGluZSB4MT0iMjIwIiB5MT0iMTUyIiB4Mj0iMzYwIiB5Mj0iMTk2Ii8+CiAgPC9nPgogIDx0ZXh0IHg9IjIzMCIgeT0iODYiPkNvbXBpbGVyIGphdmFjPC90ZXh0PgogIDxyZWN0IHg9IjE4IiB5PSIxOTgiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZGNmY2U3IiBzdHJva2U9IiMxNTgwM2QiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjgwIiB5PSIyMjEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSI2MDAiPkpWTTwvdGV4dD4KICA8cmVjdCB4PSIxOCIgeT0iMjM0IiB3aWR0aD0iMTI0IiBoZWlnaHQ9IjM2IiByeD0iNiIgZmlsbD0iI2YyZjJmNyIgc3Ryb2tlPSIjNmU2ZTczIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8dGV4dCB4PSI4MCIgeT0iMjU3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5XaW5kb3dzPC90ZXh0PgogIDxyZWN0IHg9IjE1OCIgeT0iMTk4IiB3aWR0aD0iMTI0IiBoZWlnaHQ9IjM2IiByeD0iNiIgZmlsbD0iI2RjZmNlNyIgc3Ryb2tlPSIjMTU4MDNkIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8dGV4dCB4PSIyMjAiIHk9IjIyMSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+SlZNPC90ZXh0PgogIDxyZWN0IHg9IjE1OCIgeT0iMjM0IiB3aWR0aD0iMTI0IiBoZWlnaHQ9IjM2IiByeD0iNiIgZmlsbD0iI2YyZjJmNyIgc3Ryb2tlPSIjNmU2ZTczIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8dGV4dCB4PSIyMjAiIHk9IjI1NyIgdGV4dC1hbmNob3I9Im1pZGRsZSI+bWFjT1M8L3RleHQ+CiAgPHJlY3QgeD0iMjk4IiB5PSIxOTgiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZGNmY2U3IiBzdHJva2U9IiMxNTgwM2QiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjM2MCIgeT0iMjIxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iNjAwIj5KVk08L3RleHQ+CiAgPHJlY3QgeD0iMjk4IiB5PSIyMzQiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiM2ZTZlNzMiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjM2MCIgeT0iMjU3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5MaW51eDwvdGV4dD4KICA8dGV4dCB4PSIyMjAiIHk9IjI5OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zdHlsZT0iaXRhbGljIj5FaW5tYWwgc2NocmVpYmVuLDwvdGV4dD4KICA8dGV4dCB4PSIyMjAiIHk9IjMxOCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zdHlsZT0iaXRhbGljIj7DvGJlcmFsbCBhdXNmw7xocmVuPC90ZXh0Pgo8L3N2Zz4K",qL=""+new URL("margaret-hamilton-pYPKs1sU.jpg",import.meta.url).href,QL=""+new URL("mvc-klick-KmFKqxH-.svg",import.meta.url).href,UL=""+new URL("aufgabe-mehrwertsteuer-KUkerRBd.svg",import.meta.url).href,YL=""+new URL("kino-saal-BOvcmdzb.svg",import.meta.url).href,$L=""+new URL("kino-schleifen-Ci9yPnbo.svg",import.meta.url).href,KL="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgNDkyIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iNDkyIiBmaWxsPSIjZmZmZmZmIi8+CiAgPGcgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiPgogICAgPCEtLSBTdGFydCAtLT4KICAgIDxyZWN0IHg9IjEwMCIgeT0iMTAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMjgiIHJ4PSIxNCIgZmlsbD0iI2QxZjJkOSIvPgogICAgPGxpbmUgeDE9IjE1MCIgeTE9IjM4IiB4Mj0iMTUwIiB5Mj0iNTQiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICAgIDwhLS0gQW53ZWlzdW5nIC0tPgogICAgPHJlY3QgeD0iNTAiIHk9IjU2IiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjMwIiBmaWxsPSIjZTVmMGZmIi8+CiAgICA8bGluZSB4MT0iMTUwIiB5MT0iODYiIHgyPSIxNTAiIHkyPSI5OCIgbWFya2VyLWVuZD0idXJsKCNhKSIvPgogICAgPCEtLSBSYXV0ZSAxIC0tPgogICAgPHBhdGggZD0iTTE1MCAxMDAgTDIzNSAxMjggTDE1MCAxNTYgTDY1IDEyOCBaIiBmaWxsPSIjZmZmNGQ2Ii8+CiAgICA8bGluZSB4MT0iMTUwIiB5MT0iMTU2IiB4Mj0iMTUwIiB5Mj0iMTcyIiBtYXJrZXItZW5kPSJ1cmwoI2EpIi8+CiAgICA8cmVjdCB4PSI1MCIgeT0iMTc0IiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjMwIiBmaWxsPSIjZTVmMGZmIi8+CiAgICA8bGluZSB4MT0iMTUwIiB5MT0iMjA0IiB4Mj0iMTUwIiB5Mj0iMjUwIiBtYXJrZXItZW5kPSJ1cmwoI2EpIi8+CiAgICA8IS0tIG5laW4tV2VnIHVtIGRlbiBLYXN0ZW4gaGVydW0gLS0+CiAgICA8cG9seWxpbmUgcG9pbnRzPSIyMzUsMTI4IDI4NSwxMjggMjg1LDIyMiAxNTAsMjIyIiBmaWxsPSJub25lIiBtYXJrZXItZW5kPSJ1cmwoI2EpIi8+CiAgICA8IS0tIFJhdXRlIDIgLS0+CiAgICA8cGF0aCBkPSJNMTUwIDI1MiBMMjM1IDI4MCBMMTUwIDMwOCBMNjUgMjgwIFoiIGZpbGw9IiNmZmY0ZDYiLz4KICAgIDxsaW5lIHgxPSIyMzUiIHkxPSIyODAiIHgyPSIyNjgiIHkyPSIyODAiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICAgIDxyZWN0IHg9IjI3MCIgeT0iMjY1IiB3aWR0aD0iMTE1IiBoZWlnaHQ9IjMwIiBmaWxsPSIjZTVmMGZmIi8+CiAgICA8IS0tIHp1csO8Y2sgenVyIFByw7xmdW5nIC0tPgogICAgPHBvbHlsaW5lIHBvaW50cz0iMzI3LDI2NSAzMjcsMjM4IDE1MCwyMzgiIGZpbGw9Im5vbmUiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICAgIDxsaW5lIHgxPSIxNTAiIHkxPSIzMDgiIHgyPSIxNTAiIHkyPSIzMjYiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICAgIDxyZWN0IHg9IjUwIiB5PSIzMjgiIHdpZHRoPSIyMDAiIGhlaWdodD0iMzAiIGZpbGw9IiNlNWYwZmYiLz4KICAgIDxsaW5lIHgxPSIxNTAiIHkxPSIzNTgiIHgyPSIxNTAiIHkyPSIzNzQiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICAgIDwhLS0gRW5kZSAtLT4KICAgIDxyZWN0IHg9IjEwMCIgeT0iMzc2IiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjI4IiByeD0iMTQiIGZpbGw9IiNkMWYyZDkiLz4KICA8L2c+CiAgPGcgdGV4dC1hbmNob3I9Im1pZGRsZSI+CiAgICA8dGV4dCB4PSIxNTAiIHk9IjI5Ij5JbsOtY2lvPC90ZXh0PgogICAgPHRleHQgeD0iMTUwIiB5PSI3NiI+UMO0ciB1bWEgY2jDoXZlbmEgbmEgbWVzYTwvdGV4dD4KICAgIDx0ZXh0IHg9IjE1MCIgeT0iMTMzIj5RdWVyIGHDp8O6Y2FyPzwvdGV4dD4KICAgIDx0ZXh0IHg9IjE1MCIgeT0iMTk0Ij5KdW50YXIgYcOnw7pjYXI8L3RleHQ+CiAgICA8dGV4dCB4PSIxNTAiIHk9IjI4NSI+Q2jDoSBtdWl0byBxdWVudGU/PC90ZXh0PgogICAgPHRleHQgeD0iMzI3LjUiIHk9IjI4NSI+RXNwZXJhciAxIG1pbnV0bzwvdGV4dD4KICAgIDx0ZXh0IHg9IjE1MCIgeT0iMzQ4Ij5CZWJlciBvIGNow6E8L3RleHQ+CiAgICA8dGV4dCB4PSIxNTAiIHk9IjM5NSI+RmltPC90ZXh0PgogIDwvZz4KICA8ZyBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iNjAwIj4KICAgIDx0ZXh0IHg9IjE1NiIgeT0iMTY4IiBmaWxsPSIjMjQ4YTNkIj5zaW08L3RleHQ+CiAgICA8dGV4dCB4PSIyNDIiIHk9IjEyMiIgZmlsbD0iI2Q3MDAxNSI+bsOjbzwvdGV4dD4KICAgIDx0ZXh0IHg9IjI0MCIgeT0iMjc0IiBmaWxsPSIjMjQ4YTNkIj5zaW08L3RleHQ+CiAgICA8dGV4dCB4PSIxNTYiIHk9IjMyMCIgZmlsbD0iI2Q3MDAxNSI+bsOjbzwvdGV4dD4KICA8L2c+CiAgPCEtLSBMZWdlbmRlIC0tPgogIDxsaW5lIHgxPSIxMCIgeTE9IjQxOCIgeDI9IjM5MCIgeTI9IjQxOCIgc3Ryb2tlPSIjZDFkMWQ2Ii8+CiAgPGcgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjEuNSI+CiAgICA8cmVjdCB4PSI0MCIgeT0iNDMwIiB3aWR0aD0iMzYiIGhlaWdodD0iMTgiIHJ4PSI5IiBmaWxsPSIjZDFmMmQ5Ii8+CiAgICA8cmVjdCB4PSIyMjAiIHk9IjQzMCIgd2lkdGg9IjM2IiBoZWlnaHQ9IjE4IiBmaWxsPSIjZTVmMGZmIi8+CiAgICA8cGF0aCBkPSJNNTggNDU4IEw3NiA0NjkgTDU4IDQ4MCBMNDAgNDY5IFoiIGZpbGw9IiNmZmY0ZDYiLz4KICAgIDxwYXRoIGQ9Ik0yMjYgNDYwIEwyNTYgNDYwIEwyNTAgNDc4IEwyMjAgNDc4IFoiIGZpbGw9IiNmMmU2ZmYiLz4KICA8L2c+CiAgPGcgZm9udC1zaXplPSIxMiIgZmlsbD0iIzNhM2EzYyI+CiAgICA8dGV4dCB4PSI4NiIgeT0iNDQzIj5JbsOtY2lvIG91IGZpbTwvdGV4dD4KICAgIDx0ZXh0IHg9IjI2NiIgeT0iNDQzIj5JbnN0cnXDp8OjbzwvdGV4dD4KICAgIDx0ZXh0IHg9Ijg2IiB5PSI0NzMiPkRlY2lzw6NvPC90ZXh0PgogICAgPHRleHQgeD0iMjY2IiB5PSI0NzMiPkVudHJhZGEgb3Ugc2HDrWRhPC90ZXh0PgogIDwvZz4KPC9zdmc+Cg==",XL="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMTkwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8cmVjdCB3aWR0aD0iNDAwIiBoZWlnaHQ9IjE5MCIgZmlsbD0iI2ZmZmZmZiIvPgogIDx0ZXh0IHg9IjIwIiB5PSIyNCIgZm9udC13ZWlnaHQ9IjYwMCI+T25kZSBmaWNhIG8gZWxlbWVudG8/PC90ZXh0PgogIDxyZWN0IHg9IjIwIiB5PSI0MCIgd2lkdGg9IjE5MCIgaGVpZ2h0PSIzNSIgZmlsbD0iI2RiZWFmZSIvPgogIDxyZWN0IHg9IjIwIiB5PSI3NSIgd2lkdGg9IjE5MCIgaGVpZ2h0PSIzNSIgZmlsbD0iI2RjZmNlNyIvPgogIDxsaW5lIHgxPSIyMCIgeTE9Ijc1IiB4Mj0iMjEwIiB5Mj0iNzUiIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLWRhc2hhcnJheT0iNCAzIi8+CiAgPHJlY3QgeD0iMjAiIHk9IjQwIiB3aWR0aD0iMTkwIiBoZWlnaHQ9IjcwIiBmaWxsPSJub25lIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjExNSIgeT0iNjIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMxZDRlZDgiPm1ldGFkZSBkZSBjaW1hPC90ZXh0PgogIDx0ZXh0IHg9IjExNSIgeT0iOTciIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMxNTgwM2QiPm1ldGFkZSBkZSBiYWl4bzwvdGV4dD4KICA8dGV4dCB4PSIyMjQiIHk9IjYyIj7ihpIgZmljYSA8dHNwYW4gZm9udC13ZWlnaHQ9IjYwMCI+YW50ZXM8L3RzcGFuPjwvdGV4dD4KICA8dGV4dCB4PSIyMjQiIHk9Ijk3Ij7ihpIgZmljYSA8dHNwYW4gZm9udC13ZWlnaHQ9IjYwMCI+ZGVwb2lzPC90c3Bhbj48L3RleHQ+CiAgPHJlY3QgeD0iMjAiIHk9IjEzMiIgd2lkdGg9IjE5MCIgaGVpZ2h0PSI0MCIgZmlsbD0iI2ZlZjNjNyIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8dGV4dCB4PSIxMTUiIHk9IjE1NyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxNiI+w7g8L3RleHQ+CiAgPHRleHQgeD0iMjI0IiB5PSIxNTciPuKGkiA8dHNwYW4gZm9udC13ZWlnaHQ9IjYwMCI+c3Vic3RpdHVpLW88L3RzcGFuPjwvdGV4dD4KPC9zdmc+Cg==",eW=""+new URL("l03-lochkarte-beschriftet-D1QjqGFo.svg",import.meta.url).href,tW=""+new URL("l03-lochkarte-BSn6oWaS.svg",import.meta.url).href,nW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NjAgMjkwIiBmb250LWZhbWlseT0idWktbW9ub3NwYWNlLCBNZW5sbywgQ29uc29sYXMsIG1vbm9zcGFjZSI+CjxyZWN0IHdpZHRoPSI0NjAiIGhlaWdodD0iMjkwIiBmaWxsPSIjZmZmZmZmIi8+Cjx0ZXh0IHg9IjUwIiB5PSI0NCIgZm9udC1zaXplPSI0MCIgZmlsbD0iIzZlNmU3MyIgdGV4dExlbmd0aD0iMjY0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmdBbmRHbHlwaHMiPnByZWNvPHRzcGFuIGZpbGw9IiMwMDdhZmYiIGZvbnQtd2VpZ2h0PSI3MDAiPkM8L3RzcGFuPm9tPHRzcGFuIGZpbGw9IiMwMDdhZmYiIGZvbnQtd2VpZ2h0PSI3MDAiPkk8L3RzcGFuPnZhPC90ZXh0Pgo8bGluZSB4MT0iMTgyIiB5MT0iNTQiIHgyPSIxODIiIHkyPSI4MiIgc3Ryb2tlPSIjMDA3YWZmIiBzdHJva2Utd2lkdGg9IjIuNSIgc3Ryb2tlLWRhc2hhcnJheT0iNSA0Ii8+CjxsaW5lIHgxPSIyNTQiIHkxPSI1NCIgeDI9IjI1NCIgeTI9IjgyIiBzdHJva2U9IiMwMDdhZmYiIHN0cm9rZS13aWR0aD0iMi41IiBzdHJva2UtZGFzaGFycmF5PSI1IDQiLz4KPHBhdGggZD0iTTIwIDI3MiBINDQwIiBzdHJva2U9IiNlNWQzYjAiIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjxwYXRoIGQ9Ik0xNTYgMTcyIEwxNTAgMjI2IiBzdHJva2U9IiNiODhhNTIiIHN0cm9rZS13aWR0aD0iMTMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTUwIDIyNiBMMTU2IDI2MiIgc3Ryb2tlPSIjYjg4YTUyIiBzdHJva2Utd2lkdGg9IjgiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8Y2lyY2xlIGN4PSIxNTAiIGN5PSIyMjYiIHI9IjYiIGZpbGw9IiM3YTU1MzAiIG9wYWNpdHk9IjAuNTUiLz4KPGVsbGlwc2UgY3g9IjE2MSIgY3k9IjI2NyIgcng9IjExIiByeT0iNSIgZmlsbD0iIzdhNTUzMCIvPgo8cGF0aCBkPSJNMzA0IDE3MiBMMzA4IDIyNiIgc3Ryb2tlPSIjYjg4YTUyIiBzdHJva2Utd2lkdGg9IjEzIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPHBhdGggZD0iTTMwOCAyMjYgTDMwNCAyNjIiIHN0cm9rZT0iI2I4OGE1MiIgc3Ryb2tlLXdpZHRoPSI4IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPGNpcmNsZSBjeD0iMzA4IiBjeT0iMjI2IiByPSI2IiBmaWxsPSIjN2E1NTMwIiBvcGFjaXR5PSIwLjU1Ii8+CjxlbGxpcHNlIGN4PSIzMDkiIGN5PSIyNjciIHJ4PSIxMSIgcnk9IjUiIGZpbGw9IiM3YTU1MzAiLz4KPHBhdGggZD0iTTEyMCAxNDAgQzEwNCAxNTAgMTA0IDE3NiAxMTAgMTk2IiBmaWxsPSJub25lIiBzdHJva2U9IiNiODhhNTIiIHN0cm9rZS13aWR0aD0iNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjxlbGxpcHNlIGN4PSIxMTAiIGN5PSIyMDAiIHJ4PSI1IiByeT0iOSIgZmlsbD0iIzdhNTUzMCIvPgo8cGF0aCBkPSJNMTIwIDE3MiBDMTA4IDE1MiAxMTQgMTI4IDEzNCAxMjIgQzE0OCAxMjAgMTU0IDg0IDE4MiA4NCBDMjEwIDg0IDIwOCAxMjYgMjE4IDEyNCBDMjI4IDEyNiAyMjYgODQgMjU0IDg0IEMyODIgODQgMjg0IDEyMiAyOTQgMTI4IEMzMTYgMTMyIDMyNCAxNTggMzQwIDE1OCBDMzUyIDE1OCAzNTQgMTI0IDM1OCAxMTAgQzM2MiA5OCAzNzYgOTYgMzg4IDk5IEM0MDAgMTAyIDQwNiAxMDggNDA0IDExNiBDNDAyIDEyMyAzOTAgMTI0IDM4MCAxMjIgQzM3MiAxMjIgMzcwIDEyOCAzNzAgMTM2IEMzNzAgMTYyIDM2NCAxODQgMzQyIDE4NiBDMzI2IDE4OCAzMTYgMTgyIDMwNiAxNzggQzI0OCAxODggMTg4IDE4OCAxNDAgMTgyIEMxMzAgMTgwIDEyNCAxNzcgMTIwIDE3MiBaIiBmaWxsPSIjZDJhNTZhIiBzdHJva2U9IiM3YTU1MzAiIHN0cm9rZS13aWR0aD0iMi41IiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0xMzQgMTcyIEwxMjggMjI2IiBzdHJva2U9IiNkMmE1NmEiIHN0cm9rZS13aWR0aD0iMTMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTI4IDIyNiBMMTM0IDI2MiIgc3Ryb2tlPSIjZDJhNTZhIiBzdHJva2Utd2lkdGg9IjgiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8Y2lyY2xlIGN4PSIxMjgiIGN5PSIyMjYiIHI9IjYiIGZpbGw9IiM3YTU1MzAiIG9wYWNpdHk9IjAuNTUiLz4KPGVsbGlwc2UgY3g9IjEzOSIgY3k9IjI2NyIgcng9IjExIiByeT0iNSIgZmlsbD0iIzdhNTUzMCIvPgo8cGF0aCBkPSJNMjg0IDE3MiBMMjg4IDIyNiIgc3Ryb2tlPSIjZDJhNTZhIiBzdHJva2Utd2lkdGg9IjEzIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPHBhdGggZD0iTTI4OCAyMjYgTDI4NCAyNjIiIHN0cm9rZT0iI2QyYTU2YSIgc3Ryb2tlLXdpZHRoPSI4IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPGNpcmNsZSBjeD0iMjg4IiBjeT0iMjI2IiByPSI2IiBmaWxsPSIjN2E1NTMwIiBvcGFjaXR5PSIwLjU1Ii8+CjxlbGxpcHNlIGN4PSIyODkiIGN5PSIyNjciIHJ4PSIxMSIgcnk9IjUiIGZpbGw9IiM3YTU1MzAiLz4KPHBhdGggZD0iTTM2NiAxMDMgTDM2MiA5MiBMMzc0IDEwMCBaIiBmaWxsPSIjZDJhNTZhIiBzdHJva2U9IiM3YTU1MzAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8Y2lyY2xlIGN4PSIzODIiIGN5PSIxMDciIHI9IjMuMiIgZmlsbD0iIzFjMWMxZSIvPgo8cGF0aCBkPSJNMzc3IDEwNCBRMzgyIDEwMSAzODcgMTA0IiBmaWxsPSJub25lIiBzdHJva2U9IiM3YTU1MzAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjxwYXRoIGQ9Ik0zOTggMTA3IHE0IDEgNSA0IiBmaWxsPSJub25lIiBzdHJva2U9IiM3YTU1MzAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjxwYXRoIGQ9Ik0zOTIgMTE5IFEzOTggMTE4IDQwMyAxMTciIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzdhNTUzMCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPC9zdmc+Cg==",iW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjEwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8cmVjdCB3aWR0aD0iNDAwIiBoZWlnaHQ9IjIxMCIgZmlsbD0iI2ZmZmZmZiIvPgogIDx0ZXh0IHg9IjIwMCIgeT0iMjQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtZmFtaWx5PSJ1aS1tb25vc3BhY2UsIE1lbmxvLCBDb25zb2xhcywgbW9ub3NwYWNlIiBmb250LXNpemU9IjE2Ij5pbnQgaWRhZGUgPSAxNDwvdGV4dD4KICA8cGF0aCBkPSJNMTMwIDcwIEwxNzAgNTAgTDMwMCA1MCBMMjYwIDcwIFoiIGZpbGw9IiNjOThhM2MiIHN0cm9rZT0iIzhhNWExZiIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHJlY3QgeD0iMTgwIiB5PSIzNCIgd2lkdGg9IjQ0IiBoZWlnaHQ9IjUwIiByeD0iMyIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjNmU2ZTczIiBzdHJva2Utd2lkdGg9IjEuNSIvPgogIDx0ZXh0IHg9IjIwMiIgeT0iNjAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMjAiIGZvbnQtd2VpZ2h0PSI3MDAiPjE0PC90ZXh0PgogIDxyZWN0IHg9IjEzMCIgeT0iNzAiIHdpZHRoPSIxMzAiIGhlaWdodD0iMTAwIiBmaWxsPSIjZTliODcyIiBzdHJva2U9IiM4YTVhMWYiIHN0cm9rZS13aWR0aD0iMiIvPgogIDxwYXRoIGQ9Ik0yNjAgNzAgTDMwMCA1MCBMMzAwIDE1MCBMMjYwIDE3MCBaIiBmaWxsPSIjZDQ5YTRjIiBzdHJva2U9IiM4YTVhMWYiIHN0cm9rZS13aWR0aD0iMiIvPgogIDxyZWN0IHg9IjE1MCIgeT0iMTAwIiB3aWR0aD0iOTAiIGhlaWdodD0iMzAiIHJ4PSI0IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiM4YTVhMWYiLz4KICA8dGV4dCB4PSIxOTUiIHk9IjEyMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+aWRhZGU8L3RleHQ+CiAgPHJlY3QgeD0iMTM4IiB5PSIxNDIiIHdpZHRoPSIzNCIgaGVpZ2h0PSIyMCIgcng9IjEwIiBmaWxsPSIjMDA3YWZmIi8+CiAgPHRleHQgeD0iMTU1IiB5PSIxNTYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTIiIGZpbGw9IiNmZmZmZmYiIGZvbnQtd2VpZ2h0PSI2MDAiPmludDwvdGV4dD4KICA8ZyBzdHJva2U9IiM2ZTZlNzMiPgogICAgPGxpbmUgeDE9IjMxMCIgeTE9IjQ4IiB4Mj0iMjI2IiB5Mj0iNTIiLz4KICAgIDxsaW5lIHgxPSIzMTAiIHkxPSIxMTUiIHgyPSIyNDIiIHkyPSIxMTUiLz4KICAgIDxsaW5lIHgxPSI4MCIgeTE9IjE1MiIgeDI9IjEzNCIgeTI9IjE1MiIvPgogIDwvZz4KICA8dGV4dCB4PSIzMTYiIHk9IjUyIj5WYWxvcjwvdGV4dD4KICA8dGV4dCB4PSIzMTYiIHk9IjExOSI+Tm9tZTwvdGV4dD4KICA8dGV4dCB4PSI4IiB5PSIxNTYiPlRpcG8gZGUgZGFkb3M8L3RleHQ+CiAgPHRleHQgeD0iMjAwIiB5PSIxOTgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiM2ZTZlNzMiPlBlbG8gbm9tZSBjaGVnYXMgYW8gdmFsb3IuPC90ZXh0Pgo8L3N2Zz4K",aW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjAwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMDA3YWZmIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMjAwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPGcgZm9udC1mYW1pbHk9InVpLW1vbm9zcGFjZSwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2UiIGZvbnQtc2l6ZT0iMjAiPgogICAgPHRleHQgeD0iNjAiIHk9IjExMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjcwMCI+cG9udG9zPC90ZXh0PgogICAgPHRleHQgeD0iMTI1IiB5PSIxMTAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMwMDdhZmYiIGZvbnQtd2VpZ2h0PSI3MDAiPj08L3RleHQ+CiAgICA8dGV4dCB4PSIyNjAiIHk9IjExMCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+cG9udG9zICsgNTwvdGV4dD4KICA8L2c+CiAgPHJlY3QgeD0iMTgwIiB5PSI4NiIgd2lkdGg9IjE2MCIgaGVpZ2h0PSIzNCIgcng9IjYiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzE1ODAzZCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjYwIiB5PSIxNDgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMxNTgwM2QiPuKRoCBjYWxjdWxhciBhIGRpcmVpdGE6IDEwICsgNSA9IDE1PC90ZXh0PgogIDxwYXRoIGQ9Ik0yNTAgODIgQzIzMCAzMCwgOTAgMzAsIDY0IDg0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDdhZmYiIHN0cm9rZS13aWR0aD0iMi41IiBtYXJrZXItZW5kPSJ1cmwoI2EpIi8+CiAgPHRleHQgeD0iMTYwIiB5PSIzNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzAwN2FmZiI+4pGhIGd1YXJkYXIgbyByZXN1bHRhZG8gw6AgZXNxdWVyZGE8L3RleHQ+CiAgPHJlY3QgeD0iMjAiIHk9IjE2NCIgd2lkdGg9IjM2MCIgaGVpZ2h0PSIyNiIgcng9IjYiIGZpbGw9IiNmMmYyZjciLz4KICA8dGV4dCB4PSIyMDAiIHk9IjE4MiIgdGV4dC1hbmNob3I9Im1pZGRsZSI+cG9udG9zIGFudGVzOiA8dHNwYW4gZm9udC13ZWlnaHQ9IjcwMCI+MTA8L3RzcGFuPiAgIOKGkiAgIHBvbnRvcyBkZXBvaXM6IDx0c3BhbiBmb250LXdlaWdodD0iNzAwIj4xNTwvdHNwYW4+PC90ZXh0Pgo8L3N2Zz4K",sW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMzAwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMzAwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPGcgc3Ryb2tlPSIjNmU2ZTczIiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9Im5vbmUiPgogICAgPHBhdGggZD0iTTQwIDExMCBMNDggMTgwIEwxMDIgMTgwIEwxMTAgMTEwIi8+CiAgICA8cGF0aCBkPSJNMTY1IDExMCBMMTczIDE4MCBMMjI3IDE4MCBMMjM1IDExMCIvPgogICAgPHBhdGggZD0iTTI5MCAxMTAgTDI5OCAxODAgTDM1MiAxODAgTDM2MCAxMTAiLz4KICA8L2c+CiAgPHBhdGggZD0iTTQ0IDEzNSBMNDggMTgwIEwxMDIgMTgwIEwxMDYgMTM1IFoiIGZpbGw9IiNmZGJhNzQiLz4KICA8cGF0aCBkPSJNMjk0IDEzNSBMMjk4IDE4MCBMMzUyIDE4MCBMMzU2IDEzNSBaIiBmaWxsPSIjOTNjNWZkIi8+CiAgPHRleHQgeD0iNzUiIHk9IjIwMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+ZXNxdWVyZGE8L3RleHQ+CiAgPHRleHQgeD0iNzUiIHk9IjIxNyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzZlNmU3MyI+c3VtbzwvdGV4dD4KICA8dGV4dCB4PSIyMDAiIHk9IjIwMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+YXV4PC90ZXh0PgogIDx0ZXh0IHg9IjIwMCIgeT0iMjE3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj52YXppbzwvdGV4dD4KICA8dGV4dCB4PSIzMjUiIHk9IjIwMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+ZGlyZWl0YTwvdGV4dD4KICA8dGV4dCB4PSIzMjUiIHk9IjIxNyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzZlNmU3MyI+w6FndWE8L3RleHQ+CiAgPGcgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNhKSI+CiAgICA8cGF0aCBkPSJNODggMTA0IEMxMTAgNzAsIDE2MCA3MCwgMTg2IDEwNCIvPgogICAgPHBhdGggZD0iTTMxOCAxMDQgQzI3MCAxNSwgMTMwIDE1LCA4MiAxMDQiLz4KICAgIDxwYXRoIGQ9Ik0yMTQgMTA0IEMyNDAgNzAsIDI5MCA3MCwgMzEyIDEwNCIvPgogIDwvZz4KICA8ZyBmb250LXdlaWdodD0iNzAwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj4KICAgIDxjaXJjbGUgY3g9IjEzNyIgY3k9IjgwIiByPSIxMSIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMWMxYzFlIi8+PHRleHQgeD0iMTM3IiB5PSI4NSI+MTwvdGV4dD4KICAgIDxjaXJjbGUgY3g9IjIwMCIgY3k9IjM4IiByPSIxMSIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMWMxYzFlIi8+PHRleHQgeD0iMjAwIiB5PSI0MyI+MjwvdGV4dD4KICAgIDxjaXJjbGUgY3g9IjI2MyIgY3k9IjgwIiByPSIxMSIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMWMxYzFlIi8+PHRleHQgeD0iMjYzIiB5PSI4NSI+MzwvdGV4dD4KICA8L2c+CiAgPGcgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1mYW1pbHk9InVpLW1vbm9zcGFjZSwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2UiIGZvbnQtc2l6ZT0iMTIiPgogICAgPHRleHQgeD0iMjAwIiB5PSIyNTAiPjE6IGF1eCA9IGVzcXVlcmRhPC90ZXh0PgogICAgPHRleHQgeD0iMjAwIiB5PSIyNjgiPjI6IGVzcXVlcmRhID0gZGlyZWl0YTwvdGV4dD4KICAgIDx0ZXh0IHg9IjIwMCIgeT0iMjg2Ij4zOiBkaXJlaXRhID0gYXV4PC90ZXh0PgogIDwvZz4KPC9zdmc+Cg==",rW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMTUwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8cmVjdCB3aWR0aD0iNDAwIiBoZWlnaHQ9IjE1MCIgZmlsbD0iI2ZmZmZmZiIvPgogIDxyZWN0IHg9IjIwIiB5PSI1MCIgd2lkdGg9IjgwIiBoZWlnaHQ9IjI0IiBmaWxsPSIjZmVlMmUyIi8+PHJlY3QgeD0iMzAwIiB5PSI1MCIgd2lkdGg9IjgwIiBoZWlnaHQ9IjI0IiBmaWxsPSIjZmVlMmUyIi8+CiAgPHJlY3QgeD0iMTAwIiB5PSI1MCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyNCIgZmlsbD0iI2RjZmNlNyIvPgogIDxsaW5lIHgxPSIyMCIgeTE9Ijc0IiB4Mj0iMzgwIiB5Mj0iNzQiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPGxpbmUgeDE9IjUwIiB5MT0iNjgiIHgyPSI1MCIgeTI9IjgwIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMiIvPjx0ZXh0IHg9IjUwIiB5PSI5OCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+MDwvdGV4dD4KICA8bGluZSB4MT0iMTAwIiB5MT0iNjgiIHgyPSIxMDAiIHkyPSI4MCIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz48dGV4dCB4PSIxMDAiIHk9Ijk4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj4xPC90ZXh0PgogIDxsaW5lIHgxPSIxNTAiIHkxPSI2OCIgeDI9IjE1MCIgeTI9IjgwIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMiIvPjx0ZXh0IHg9IjE1MCIgeT0iOTgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPjI8L3RleHQ+CiAgPGxpbmUgeDE9IjIwMCIgeTE9IjY4IiB4Mj0iMjAwIiB5Mj0iODAiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIyIi8+PHRleHQgeD0iMjAwIiB5PSI5OCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+MzwvdGV4dD4KICA8bGluZSB4MT0iMjUwIiB5MT0iNjgiIHgyPSIyNTAiIHkyPSI4MCIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz48dGV4dCB4PSIyNTAiIHk9Ijk4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj40PC90ZXh0PgogIDxsaW5lIHgxPSIzMDAiIHkxPSI2OCIgeDI9IjMwMCIgeTI9IjgwIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMiIvPjx0ZXh0IHg9IjMwMCIgeT0iOTgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPjU8L3RleHQ+CiAgPGxpbmUgeDE9IjM1MCIgeTE9IjY4IiB4Mj0iMzUwIiB5Mj0iODAiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIyIi8+PHRleHQgeD0iMzUwIiB5PSI5OCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+NjwvdGV4dD4KICA8Y2lyY2xlIGN4PSIxMDAiIGN5PSI3NCIgcj0iNiIgZmlsbD0iIzE1ODAzZCIvPjxjaXJjbGUgY3g9IjMwMCIgY3k9Ijc0IiByPSI2IiBmaWxsPSIjMTU4MDNkIi8+CiAgPHRleHQgeD0iMjAwIiB5PSI0MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzE1ODAzZCIgZm9udC13ZWlnaHQ9IjYwMCI+dsOhbGlkYTwvdGV4dD4KICA8dGV4dCB4PSI1MCIgeT0iNDAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiNiOTFjMWMiIGZvbnQtd2VpZ2h0PSI2MDAiPmludsOhbGlkYTwvdGV4dD48dGV4dCB4PSIzNTAiIHk9IjQwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjYjkxYzFjIiBmb250LXdlaWdodD0iNjAwIj5pbnbDoWxpZGE8L3RleHQ+CiAgPGcgZm9udC1mYW1pbHk9InVpLW1vbm9zcGFjZSwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2UiIGZvbnQtc2l6ZT0iMTMiIHRleHQtYW5jaG9yPSJtaWRkbGUiPgogICAgPHRleHQgeD0iMjAwIiB5PSIxMjQiIGZpbGw9IiMxNTgwM2QiPm5vdGEgJmd0Oz0gMSAmYW1wOyZhbXA7IG5vdGEgJmx0Oz0gNTwvdGV4dD4KICAgIDx0ZXh0IHg9IjIwMCIgeT0iMTQyIiBmaWxsPSIjYjkxYzFjIj5ub3RhICZsdDsgMSB8fCBub3RhICZndDsgNTwvdGV4dD4KICA8L2c+Cjwvc3ZnPgo=",oW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjMwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMjMwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHRleHQgeD0iMjAiIHk9IjI0IiBmb250LXdlaWdodD0iNjAwIj5Db21vIGZ1bmNpb25hIG8gY2ljbG8gd2hpbGU8L3RleHQ+CiAgPHJlY3QgeD0iMTIwIiB5PSI0NCIgd2lkdGg9IjE2MCIgaGVpZ2h0PSI0MCIgcng9IjIwIiBmaWxsPSIjZmVmM2M3IiBzdHJva2U9IiNiNDUzMDkiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjIwMCIgeT0iNjkiIHRleHQtYW5jaG9yPSJtaWRkbGUiPuKRoCB2ZXJpZmljYXIgYSBjb25kacOnw6NvPC90ZXh0PgogIDxyZWN0IHg9IjEyMCIgeT0iMTI4IiB3aWR0aD0iMTYwIiBoZWlnaHQ9IjQwIiByeD0iNiIgZmlsbD0iI2RiZWFmZSIgc3Ryb2tlPSIjMWQ0ZWQ4IiBzdHJva2Utd2lkdGg9IjIiLz4KICA8dGV4dCB4PSIyMDAiIHk9IjE1MyIgdGV4dC1hbmNob3I9Im1pZGRsZSI+4pGhIGV4ZWN1dGFyIG8gaW50ZXJpb3I8L3RleHQ+CiAgPGcgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNhKSI+CiAgICA8bGluZSB4MT0iMjAwIiB5MT0iODQiIHgyPSIyMDAiIHkyPSIxMjYiLz4KICAgIDxwYXRoIGQ9Ik0xMjAgMTQ4IEM4MCAxNDgsIDgwIDY0LCAxMTggNjQiLz4KICAgIDxwYXRoIGQ9Ik0yODAgNjQgTDM0MCA2NCBMMzQwIDIwMCBMMjgyIDIwMCIvPgogIDwvZz4KICA8dGV4dCB4PSIyMDgiIHk9IjExMCIgZmlsbD0iIzE1ODAzZCIgZm9udC13ZWlnaHQ9IjYwMCI+dHJ1ZTwvdGV4dD4KICA8dGV4dCB4PSIzOCIgeT0iMTEwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj52b2x0YXI8L3RleHQ+CiAgPHRleHQgeD0iMzgiIHk9IjEyNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzZlNmU3MyI+cGFyYSBjaW1hPC90ZXh0PgogIDx0ZXh0IHg9IjM0OCIgeT0iMTM0IiBmaWxsPSIjYjkxYzFjIiBmb250LXdlaWdodD0iNjAwIj5mYWxzZTwvdGV4dD4KICA8dGV4dCB4PSIyNzYiIHk9IjIwNSIgdGV4dC1hbmNob3I9ImVuZCI+Y29udGludWFyIHBvciBiYWl4byBkbyBjaWNsbzwvdGV4dD4KPC9zdmc+Cg==",lW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjMwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMjMwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHRleHQgeD0iMTAwIiB5PSIyMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+cHLDqS10ZXN0ZSAod2hpbGUpPC90ZXh0PgogIDx0ZXh0IHg9IjMwMCIgeT0iMjIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSI2MDAiPnDDs3MtdGVzdGUgKGRvLXdoaWxlKTwvdGV4dD4KICA8bGluZSB4MT0iMjAwIiB5MT0iMTAiIHgyPSIyMDAiIHkyPSIyMjAiIHN0cm9rZT0iI2QxZDFkNiIvPgogIDxyZWN0IHg9IjM1IiB5PSI0NCIgd2lkdGg9IjEzMCIgaGVpZ2h0PSIzNiIgcng9IjE4IiBmaWxsPSIjZmVmM2M3IiBzdHJva2U9IiNiNDUzMDkiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjEwMCIgeT0iNjciIHRleHQtYW5jaG9yPSJtaWRkbGUiPuKRoCBjb25kacOnw6NvPC90ZXh0PgogIDxyZWN0IHg9IjM1IiB5PSIxMjQiIHdpZHRoPSIxMzAiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZGJlYWZlIiBzdHJva2U9IiMxZDRlZDgiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjEwMCIgeT0iMTQ3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj7ikaEgaW50ZXJpb3I8L3RleHQ+CiAgPHJlY3QgeD0iMjM1IiB5PSI0NCIgd2lkdGg9IjEzMCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNkYmVhZmUiIHN0cm9rZT0iIzFkNGVkOCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMzAwIiB5PSI2NyIgdGV4dC1hbmNob3I9Im1pZGRsZSI+4pGgIGludGVyaW9yPC90ZXh0PgogIDxyZWN0IHg9IjIzNSIgeT0iMTI0IiB3aWR0aD0iMTMwIiBoZWlnaHQ9IjM2IiByeD0iMTgiIGZpbGw9IiNmZWYzYzciIHN0cm9rZT0iI2I0NTMwOSIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMzAwIiB5PSIxNDciIHRleHQtYW5jaG9yPSJtaWRkbGUiPuKRoSBjb25kacOnw6NvPC90ZXh0PgogIDxnIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIxLjYiIG1hcmtlci1lbmQ9InVybCgjYSkiPgogICAgPGxpbmUgeDE9IjEwMCIgeTE9IjgwIiB4Mj0iMTAwIiB5Mj0iMTIyIi8+CiAgICA8cGF0aCBkPSJNMzUgMTQyIEM4IDE0MiwgOCA2MiwgMzMgNjIiLz4KICAgIDxsaW5lIHgxPSIzMDAiIHkxPSI4MCIgeDI9IjMwMCIgeTI9IjEyMiIvPgogICAgPHBhdGggZD0iTTM2NSAxNDIgQzM5MiAxNDIsIDM5MiA2MiwgMzY3IDYyIi8+CiAgPC9nPgogIDx0ZXh0IHg9IjEwNiIgeT0iMTA2IiBmaWxsPSIjMTU4MDNkIiBmb250LXdlaWdodD0iNjAwIj50cnVlPC90ZXh0PgogIDx0ZXh0IHg9IjM4MCIgeT0iMTA2IiB0ZXh0LWFuY2hvcj0iZW5kIiBmaWxsPSIjMTU4MDNkIiBmb250LXdlaWdodD0iNjAwIj50cnVlPC90ZXh0PgogIDx0ZXh0IHg9IjEwMCIgeT0iMTkwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj5TZSBhIGNvbmRpw6fDo28gZm9yIGxvZ28gZmFsc2EsPC90ZXh0PgogIDx0ZXh0IHg9IjEwMCIgeT0iMjA2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj5vIGludGVyaW9yIDx0c3BhbiBmb250LXdlaWdodD0iNzAwIiBmaWxsPSIjMWMxYzFlIj5udW5jYTwvdHNwYW4+IMOpIGV4ZWN1dGFkby48L3RleHQ+CiAgPHRleHQgeD0iMzAwIiB5PSIxOTAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiM2ZTZlNzMiPk8gaW50ZXJpb3Igw6kgc2VtcHJlIGV4ZWN1dGFkbzwvdGV4dD4KICA8dGV4dCB4PSIzMDAiIHk9IjIwNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzZlNmU3MyI+PHRzcGFuIGZvbnQtd2VpZ2h0PSI3MDAiIGZpbGw9IiMxYzFjMWUiPnBlbG8gbWVub3MgdW1hIHZlejwvdHNwYW4+LjwvdGV4dD4KPC9zdmc+Cg==",uW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjUwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMjUwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHJlY3QgeD0iMTIwIiB5PSIxNCIgd2lkdGg9IjE2MCIgaGVpZ2h0PSIzNCIgcng9IjYiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjAwIiB5PSIzNiIgdGV4dC1hbmNob3I9Im1pZGRsZSI+4pGgIEluw61jaW8gPHRzcGFuIGZpbGw9IiM2ZTZlNzMiPihzw7MgdW1hIHZleik8L3RzcGFuPjwvdGV4dD4KICA8cmVjdCB4PSIxMjAiIHk9Ijc2IiB3aWR0aD0iMTYwIiBoZWlnaHQ9IjM0IiByeD0iMTciIGZpbGw9IiNmZWYzYzciIHN0cm9rZT0iI2I0NTMwOSIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjAwIiB5PSI5OCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+4pGhIHZlcmlmaWNhciBhIGNvbmRpw6fDo288L3RleHQ+CiAgPHJlY3QgeD0iMTIwIiB5PSIxMzgiIHdpZHRoPSIxNjAiIGhlaWdodD0iMzQiIHJ4PSI2IiBmaWxsPSIjZGJlYWZlIiBzdHJva2U9IiMxZDRlZDgiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjIwMCIgeT0iMTYwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj7ikaIgZXhlY3V0YXIgbyBpbnRlcmlvcjwvdGV4dD4KICA8cmVjdCB4PSIxMjAiIHk9IjIwMCIgd2lkdGg9IjE2MCIgaGVpZ2h0PSIzNCIgcng9IjYiIGZpbGw9IiNkY2ZjZTciIHN0cm9rZT0iIzE1ODAzZCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjAwIiB5PSIyMjIiIHRleHQtYW5jaG9yPSJtaWRkbGUiPuKRoyBwYXNzbywgcC4gZXguIGkrKzwvdGV4dD4KICA8ZyBmaWxsPSJub25lIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI2EpIj4KICAgIDxsaW5lIHgxPSIyMDAiIHkxPSI0OCIgeDI9IjIwMCIgeTI9Ijc0Ii8+CiAgICA8bGluZSB4MT0iMjAwIiB5MT0iMTEwIiB4Mj0iMjAwIiB5Mj0iMTM2Ii8+CiAgICA8bGluZSB4MT0iMjAwIiB5MT0iMTcyIiB4Mj0iMjAwIiB5Mj0iMTk4Ii8+CiAgICA8cGF0aCBkPSJNMTIwIDIxNyBDNjAgMjE3LCA2MCA5MywgMTE4IDkzIi8+CiAgICA8cGF0aCBkPSJNMjgwIDkzIEwzMzAgOTMiLz4KICA8L2c+CiAgPHRleHQgeD0iMjA4IiB5PSIxMjkiIGZpbGw9IiMxNTgwM2QiIGZvbnQtd2VpZ2h0PSI2MDAiPnRydWU8L3RleHQ+CiAgPHRleHQgeD0iNDgiIHk9IjE2MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzZlNmU3MyI+dm9sdGFyPC90ZXh0PgogIDx0ZXh0IHg9IjQ4IiB5PSIxNzYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiM2ZTZlNzMiPmFvIOKRoTwvdGV4dD4KICA8dGV4dCB4PSIzMDAiIHk9Ijg0IiBmaWxsPSIjYjkxYzFjIiBmb250LXdlaWdodD0iNjAwIj5mYWxzZTwvdGV4dD4KICA8dGV4dCB4PSIzMzYiIHk9Ijk4Ij5maW08L3RleHQ+Cjwvc3ZnPgo=",mW=""+new URL("l12-while-zu-for-CM2--y57.svg",import.meta.url).href,cW=""+new URL("l13-verschachtelt-tabelle-CR2WySqU.svg",import.meta.url).href,dW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMTkwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMDA3YWZmIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMTkwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHRleHQgeD0iMjAiIHk9IjI0IiBmb250LWZhbWlseT0idWktbW9ub3NwYWNlLCBNZW5sbywgQ29uc29sYXMsIG1vbm9zcGFjZSIgZm9udC1zaXplPSIxNCI+aW50W10gbnVtZXJvcyA9IHsyLCA0LCA2LCA4LCAxMH08L3RleHQ+CiAgPHRleHQgeD0iMjAiIHk9IjU0IiBmaWxsPSIjNmU2ZTczIiBmb250LXNpemU9IjEyIj7DjW5kaWNlPC90ZXh0PgogIDx0ZXh0IHg9IjkwIiB5PSI1NCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzAwN2FmZiIgZm9udC13ZWlnaHQ9IjcwMCI+MDwvdGV4dD48cmVjdCB4PSI2MCIgeT0iNjIiIHdpZHRoPSI2MCIgaGVpZ2h0PSI0NiIgZmlsbD0iI2YyZjJmNyIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz48dGV4dCB4PSI5MCIgeT0iOTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTgiIGZvbnQtd2VpZ2h0PSI2MDAiPjI8L3RleHQ+CiAgPHRleHQgeD0iMTUwIiB5PSI1NCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzAwN2FmZiIgZm9udC13ZWlnaHQ9IjcwMCI+MTwvdGV4dD48cmVjdCB4PSIxMjAiIHk9IjYyIiB3aWR0aD0iNjAiIGhlaWdodD0iNDYiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIyIi8+PHRleHQgeD0iMTUwIiB5PSI5MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxOCIgZm9udC13ZWlnaHQ9IjYwMCI+NDwvdGV4dD4KICA8dGV4dCB4PSIyMTAiIHk9IjU0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjMDA3YWZmIiBmb250LXdlaWdodD0iNzAwIj4yPC90ZXh0PjxyZWN0IHg9IjE4MCIgeT0iNjIiIHdpZHRoPSI2MCIgaGVpZ2h0PSI0NiIgZmlsbD0iI2YyZjJmNyIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz48dGV4dCB4PSIyMTAiIHk9IjkyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE4IiBmb250LXdlaWdodD0iNjAwIj42PC90ZXh0PgogIDx0ZXh0IHg9IjI3MCIgeT0iNTQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMwMDdhZmYiIGZvbnQtd2VpZ2h0PSI3MDAiPjM8L3RleHQ+PHJlY3QgeD0iMjQwIiB5PSI2MiIgd2lkdGg9IjYwIiBoZWlnaHQ9IjQ2IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMiIvPjx0ZXh0IHg9IjI3MCIgeT0iOTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTgiIGZvbnQtd2VpZ2h0PSI2MDAiPjg8L3RleHQ+CiAgPHRleHQgeD0iMzMwIiB5PSI1NCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzAwN2FmZiIgZm9udC13ZWlnaHQ9IjcwMCI+NDwvdGV4dD48cmVjdCB4PSIzMDAiIHk9IjYyIiB3aWR0aD0iNjAiIGhlaWdodD0iNDYiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIyIi8+PHRleHQgeD0iMzMwIiB5PSI5MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxOCIgZm9udC13ZWlnaHQ9IjYwMCI+MTA8L3RleHQ+CiAgPHRleHQgeD0iMjAiIHk9IjkwIiBmaWxsPSIjNmU2ZTczIiBmb250LXNpemU9IjEyIj5WYWxvcjwvdGV4dD4KICA8ZyBmaWxsPSJub25lIiBzdHJva2U9IiMwMDdhZmYiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI2EpIj48bGluZSB4MT0iOTAiIHkxPSIxNDAiIHgyPSI5MCIgeTI9IjExMiIvPjxsaW5lIHgxPSIzMzAiIHkxPSIxNDAiIHgyPSIzMzAiIHkyPSIxMTIiLz48L2c+CiAgPGcgZm9udC1mYW1pbHk9InVpLW1vbm9zcGFjZSwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2UiIGZvbnQtc2l6ZT0iMTMiIHRleHQtYW5jaG9yPSJtaWRkbGUiPjx0ZXh0IHg9IjkwIiB5PSIxNTYiPm51bWVyb3NbMF0gw6kgMjwvdGV4dD48dGV4dCB4PSIzMzAiIHk9IjE1NiI+bnVtZXJvc1s0XSDDqSAxMDwvdGV4dD48L2c+CiAgPHRleHQgeD0iMjAwIiB5PSIxODIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiM2ZTZlNzMiPjUgcG9zacOnw7VlcywgY29udGEtc2UgYSBwYXJ0aXIgZGUgMDogbyDDumx0aW1vIMOtbmRpY2Ugw6kgNC48L3RleHQ+Cjwvc3ZnPgo=",hW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDAgMjkwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0NDAiIGhlaWdodD0iMjkwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHJlY3QgeD0iMTEwIiB5PSIxMiIgd2lkdGg9IjIyMCIgaGVpZ2h0PSI0OCIgcng9IjYiIGZpbGw9IiNkYmVhZmUiIHN0cm9rZT0iIzFkNGVkOCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjIwIiB5PSIzMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1mYW1pbHk9InVpLW1vbm9zcGFjZSwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2UiIGZvbnQtd2VpZ2h0PSI2MDAiPmNhbGN1bGFkb3JhLmNwcDwvdGV4dD4KICA8dGV4dCB4PSIyMjAiIHk9IjUxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIiBmaWxsPSIjM2EzYTNjIj5jw7NkaWdvLWZvbnRlIGVtIEMrKzwvdGV4dD4KICA8ZyBmaWxsPSJub25lIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI2EpIj4KICAgIDxsaW5lIHgxPSIyMjAiIHkxPSI2MCIgeDI9IjgwIiB5Mj0iOTQiLz4KICAgIDxsaW5lIHgxPSI4MCIgeTE9IjEyNiIgeDI9IjgwIiB5Mj0iMTU2Ii8+CiAgICA8bGluZSB4MT0iMjIwIiB5MT0iNjAiIHgyPSIyMjAiIHkyPSI5NCIvPgogICAgPGxpbmUgeDE9IjIyMCIgeTE9IjEyNiIgeDI9IjIyMCIgeTI9IjE1NiIvPgogICAgPGxpbmUgeDE9IjIyMCIgeTE9IjYwIiB4Mj0iMzYwIiB5Mj0iOTQiLz4KICAgIDxsaW5lIHgxPSIzNjAiIHkxPSIxMjYiIHgyPSIzNjAiIHkyPSIxNTYiLz4KICA8L2c+CiAgPHJlY3QgeD0iMTgiIHk9Ijk2IiB3aWR0aD0iMTI0IiBoZWlnaHQ9IjMwIiByeD0iMTUiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KICA8dGV4dCB4PSI4MCIgeT0iMTE2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIj5jb21waWxhZG9yPC90ZXh0PgogIDxyZWN0IHg9IjE4IiB5PSIxNTgiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZmVlMmUyIiBzdHJva2U9IiNiOTFjMWMiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjgwIiB5PSIxODEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSI2MDAiPmPDs2RpZ28gbcOhcXVpbmE8L3RleHQ+CiAgPHJlY3QgeD0iMTgiIHk9IjE5NCIgd2lkdGg9IjEyNCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iODAiIHk9IjIxNyIgdGV4dC1hbmNob3I9Im1pZGRsZSI+V2luZG93czwvdGV4dD4KICA8cmVjdCB4PSIxNTgiIHk9Ijk2IiB3aWR0aD0iMTI0IiBoZWlnaHQ9IjMwIiByeD0iMTUiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KICA8dGV4dCB4PSIyMjAiIHk9IjExNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyI+Y29tcGlsYWRvcjwvdGV4dD4KICA8cmVjdCB4PSIxNTgiIHk9IjE1OCIgd2lkdGg9IjEyNCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNmZWUyZTIiIHN0cm9rZT0iI2I5MWMxYyIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjIwIiB5PSIxODEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSI2MDAiPmPDs2RpZ28gbcOhcXVpbmE8L3RleHQ+CiAgPHJlY3QgeD0iMTU4IiB5PSIxOTQiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiM2ZTZlNzMiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjIyMCIgeT0iMjE3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5tYWNPUzwvdGV4dD4KICA8cmVjdCB4PSIyOTgiIHk9Ijk2IiB3aWR0aD0iMTI0IiBoZWlnaHQ9IjMwIiByeD0iMTUiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KICA8dGV4dCB4PSIzNjAiIHk9IjExNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyI+Y29tcGlsYWRvcjwvdGV4dD4KICA8cmVjdCB4PSIyOTgiIHk9IjE1OCIgd2lkdGg9IjEyNCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNmZWUyZTIiIHN0cm9rZT0iI2I5MWMxYyIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMzYwIiB5PSIxODEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSI2MDAiPmPDs2RpZ28gbcOhcXVpbmE8L3RleHQ+CiAgPHJlY3QgeD0iMjk4IiB5PSIxOTQiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiM2ZTZlNzMiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjM2MCIgeT0iMjE3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5MaW51eDwvdGV4dD4KICA8dGV4dCB4PSIyMjAiIHk9IjI1OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zdHlsZT0iaXRhbGljIj5Db21waWxhciBkZSBub3ZvPC90ZXh0PgogIDx0ZXh0IHg9IjIyMCIgeT0iMjc4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXN0eWxlPSJpdGFsaWMiPnBhcmEgY2FkYSBzaXN0ZW1hPC90ZXh0Pgo8L3N2Zz4K",gW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDAgMzMwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0NDAiIGhlaWdodD0iMzMwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHJlY3QgeD0iMTEwIiB5PSIxMiIgd2lkdGg9IjIyMCIgaGVpZ2h0PSI0OCIgcng9IjYiIGZpbGw9IiNkYmVhZmUiIHN0cm9rZT0iIzFkNGVkOCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjIwIiB5PSIzMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1mYW1pbHk9InVpLW1vbm9zcGFjZSwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2UiIGZvbnQtd2VpZ2h0PSI2MDAiPlRhYnVhZGEuamF2YTwvdGV4dD4KICA8dGV4dCB4PSIyMjAiIHk9IjUxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIiBmaWxsPSIjM2EzYTNjIj5jw7NkaWdvLWZvbnRlLCBwYXJhIHBlc3NvYXM8L3RleHQ+CiAgPHJlY3QgeD0iMTEwIiB5PSIxMDQiIHdpZHRoPSIyMjAiIGhlaWdodD0iNDgiIHJ4PSI2IiBmaWxsPSIjZmVmM2M3IiBzdHJva2U9IiNiNDUzMDkiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjIyMCIgeT0iMTI0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LWZhbWlseT0idWktbW9ub3NwYWNlLCBNZW5sbywgQ29uc29sYXMsIG1vbm9zcGFjZSIgZm9udC13ZWlnaHQ9IjYwMCI+VGFidWFkYS5jbGFzczwvdGV4dD4KICA8dGV4dCB4PSIyMjAiIHk9IjE0MyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyIgZmlsbD0iIzNhM2EzYyI+Ynl0ZWNvZGU6IENBIEZFIEJBIEJFIOKApjwvdGV4dD4KICA8ZyBmaWxsPSJub25lIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI2EpIj4KICAgIDxsaW5lIHgxPSIyMjAiIHkxPSI2MCIgeDI9IjIyMCIgeTI9IjEwMiIvPgogICAgPGxpbmUgeDE9IjIyMCIgeTE9IjE1MiIgeDI9IjgwIiB5Mj0iMTk2Ii8+CiAgICA8bGluZSB4MT0iMjIwIiB5MT0iMTUyIiB4Mj0iMjIwIiB5Mj0iMTk2Ii8+CiAgICA8bGluZSB4MT0iMjIwIiB5MT0iMTUyIiB4Mj0iMzYwIiB5Mj0iMTk2Ii8+CiAgPC9nPgogIDx0ZXh0IHg9IjIzMCIgeT0iODYiPmNvbXBpbGFkb3IgamF2YWM8L3RleHQ+CiAgPHJlY3QgeD0iMTgiIHk9IjE5OCIgd2lkdGg9IjEyNCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNkY2ZjZTciIHN0cm9rZT0iIzE1ODAzZCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iODAiIHk9IjIyMSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+SlZNPC90ZXh0PgogIDxyZWN0IHg9IjE4IiB5PSIyMzQiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiM2ZTZlNzMiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjgwIiB5PSIyNTciIHRleHQtYW5jaG9yPSJtaWRkbGUiPldpbmRvd3M8L3RleHQ+CiAgPHJlY3QgeD0iMTU4IiB5PSIxOTgiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZGNmY2U3IiBzdHJva2U9IiMxNTgwM2QiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjIyMCIgeT0iMjIxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iNjAwIj5KVk08L3RleHQ+CiAgPHJlY3QgeD0iMTU4IiB5PSIyMzQiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiM2ZTZlNzMiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjIyMCIgeT0iMjU3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5tYWNPUzwvdGV4dD4KICA8cmVjdCB4PSIyOTgiIHk9IjE5OCIgd2lkdGg9IjEyNCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNkY2ZjZTciIHN0cm9rZT0iIzE1ODAzZCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMzYwIiB5PSIyMjEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSI2MDAiPkpWTTwvdGV4dD4KICA8cmVjdCB4PSIyOTgiIHk9IjIzNCIgd2lkdGg9IjEyNCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMzYwIiB5PSIyNTciIHRleHQtYW5jaG9yPSJtaWRkbGUiPkxpbnV4PC90ZXh0PgogIDx0ZXh0IHg9IjIyMCIgeT0iMjk4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXN0eWxlPSJpdGFsaWMiPkVzY3JldmVyIHVtYSB2ZXosPC90ZXh0PgogIDx0ZXh0IHg9IjIyMCIgeT0iMzE4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXN0eWxlPSJpdGFsaWMiPmV4ZWN1dGFyIGVtIHF1YWxxdWVyIGxhZG88L3RleHQ+Cjwvc3ZnPgo=",pW=""+new URL("mvc-klick-DKonBpbs.svg",import.meta.url).href,fW=""+new URL("schiffe-versenken-iEBDHIxD.svg",import.meta.url).href,bW=""+new URL("ss-binaere-suche-DVVS2SNc.svg",import.meta.url).href,xW=""+new URL("ss-bubblesort-AFDcFDah.svg",import.meta.url).href,vW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDQgMTk2IiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmaWxsPSIjMWMxYzFlIj4KPHJlY3Qgd2lkdGg9IjQwNCIgaGVpZ2h0PSIxOTYiIGZpbGw9IiNmZmZmZmYiLz4KPHRleHQgeD0iMTQiIHk9IjI0IiBmb250LXdlaWdodD0iNjAwIiBmb250LXNpemU9IjE1Ij5Qcm9jdXJhLXNlIG8gOS4gQXMgY2FydGFzIGVzdMOjbyBiYXJhbGhhZGFzLjwvdGV4dD4KPGc+PHJlY3QgeD0iMTQiIHk9IjUwIiB3aWR0aD0iNDAiIGhlaWdodD0iNTYiIHJ4PSI1IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMSIvPjx0ZXh0IHg9IjM0LjAiIHk9Ijc1LjIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTgiIGZvbnQtd2VpZ2h0PSI3MDAiIGZpbGw9IiNkYzI2MjYiPjc8L3RleHQ+PHRleHQgeD0iMzQuMCIgeT0iOTUuOTE5OTk5OTk5OTk5OTkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTUiIGZpbGw9IiNkYzI2MjYiPuKZpTwvdGV4dD48L2c+Cjx0ZXh0IHg9IjM0LjAiIHk9IjEzMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxNiIgZm9udC13ZWlnaHQ9IjYwMCIgZmlsbD0iI2RjMjYyNiI+4pyXPC90ZXh0Pgo8dGV4dCB4PSIzNC4wIiB5PSIxNDgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiM2ZTZlNzMiPjEuPC90ZXh0Pgo8Zz48cmVjdCB4PSI2MiIgeT0iNTAiIHdpZHRoPSI0MCIgaGVpZ2h0PSI1NiIgcng9IjUiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIxIi8+PHRleHQgeD0iODIuMCIgeT0iNzUuMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxOCIgZm9udC13ZWlnaHQ9IjcwMCIgZmlsbD0iIzFjMWMxZSI+MzwvdGV4dD48dGV4dCB4PSI4Mi4wIiB5PSI5NS45MTk5OTk5OTk5OTk5OSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxNSIgZmlsbD0iIzFjMWMxZSI+4pmgPC90ZXh0PjwvZz4KPHRleHQgeD0iODIuMCIgeT0iMTMwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE2IiBmb250LXdlaWdodD0iNjAwIiBmaWxsPSIjZGMyNjI2Ij7inJc8L3RleHQ+Cjx0ZXh0IHg9IjgyLjAiIHk9IjE0OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyIgZmlsbD0iIzZlNmU3MyI+Mi48L3RleHQ+CjxnPjxyZWN0IHg9IjExMCIgeT0iNTAiIHdpZHRoPSI0MCIgaGVpZ2h0PSI1NiIgcng9IjUiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIxIi8+PHRleHQgeD0iMTMwLjAiIHk9Ijc1LjIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTgiIGZvbnQtd2VpZ2h0PSI3MDAiIGZpbGw9IiNkYzI2MjYiPjEwPC90ZXh0Pjx0ZXh0IHg9IjEzMC4wIiB5PSI5NS45MTk5OTk5OTk5OTk5OSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxNSIgZmlsbD0iI2RjMjYyNiI+4pmmPC90ZXh0PjwvZz4KPHRleHQgeD0iMTMwLjAiIHk9IjEzMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxNiIgZm9udC13ZWlnaHQ9IjYwMCIgZmlsbD0iI2RjMjYyNiI+4pyXPC90ZXh0Pgo8dGV4dCB4PSIxMzAuMCIgeT0iMTQ4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIiBmaWxsPSIjNmU2ZTczIj4zLjwvdGV4dD4KPGc+PHJlY3QgeD0iMTU4IiB5PSI1MCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjU2IiByeD0iNSIgZmlsbD0iI2YyZjJmNyIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjEiLz48dGV4dCB4PSIxNzguMCIgeT0iNzUuMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxOCIgZm9udC13ZWlnaHQ9IjcwMCIgZmlsbD0iIzFjMWMxZSI+NTwvdGV4dD48dGV4dCB4PSIxNzguMCIgeT0iOTUuOTE5OTk5OTk5OTk5OTkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTUiIGZpbGw9IiMxYzFjMWUiPuKZozwvdGV4dD48L2c+Cjx0ZXh0IHg9IjE3OC4wIiB5PSIxMzAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTYiIGZvbnQtd2VpZ2h0PSI2MDAiIGZpbGw9IiNkYzI2MjYiPuKclzwvdGV4dD4KPHRleHQgeD0iMTc4LjAiIHk9IjE0OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyIgZmlsbD0iIzZlNmU3MyI+NC48L3RleHQ+CjxnPjxyZWN0IHg9IjIwNiIgeT0iNTAiIHdpZHRoPSI0MCIgaGVpZ2h0PSI1NiIgcng9IjUiIGZpbGw9IiNkY2ZjZTciIHN0cm9rZT0iIzE1ODAzZCIgc3Ryb2tlLXdpZHRoPSIzIi8+PHRleHQgeD0iMjI2LjAiIHk9Ijc1LjIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTgiIGZvbnQtd2VpZ2h0PSI3MDAiIGZpbGw9IiMxYzFjMWUiPjk8L3RleHQ+PHRleHQgeD0iMjI2LjAiIHk9Ijk1LjkxOTk5OTk5OTk5OTk5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE1IiBmaWxsPSIjMWMxYzFlIj7imaA8L3RleHQ+PC9nPgo8dGV4dCB4PSIyMjYuMCIgeT0iMTMwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE2IiBmb250LXdlaWdodD0iNjAwIiBmaWxsPSIjMTU4MDNkIj7inJM8L3RleHQ+Cjx0ZXh0IHg9IjIyNi4wIiB5PSIxNDgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiM2ZTZlNzMiPjUuPC90ZXh0Pgo8Zz48cmVjdCB4PSIyNTQiIHk9IjUwIiB3aWR0aD0iNDAiIGhlaWdodD0iNTYiIHJ4PSI1IiBmaWxsPSIjMWQ0ZWQ4IiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMSIvPjxyZWN0IHg9IjI1OCIgeT0iNTQiIHdpZHRoPSIzMiIgaGVpZ2h0PSI0OCIgcng9IjMiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzkzYzVmZCIgc3Ryb2tlLXdpZHRoPSIxLjIiIHN0cm9rZS1kYXNoYXJyYXk9IjMgMiIvPjwvZz4KPGc+PHJlY3QgeD0iMzAyIiB5PSI1MCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjU2IiByeD0iNSIgZmlsbD0iIzFkNGVkOCIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjEiLz48cmVjdCB4PSIzMDYiIHk9IjU0IiB3aWR0aD0iMzIiIGhlaWdodD0iNDgiIHJ4PSIzIiBmaWxsPSJub25lIiBzdHJva2U9IiM5M2M1ZmQiIHN0cm9rZS13aWR0aD0iMS4yIiBzdHJva2UtZGFzaGFycmF5PSIzIDIiLz48L2c+CjxnPjxyZWN0IHg9IjM1MCIgeT0iNTAiIHdpZHRoPSI0MCIgaGVpZ2h0PSI1NiIgcng9IjUiIGZpbGw9IiMxZDRlZDgiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIxIi8+PHJlY3QgeD0iMzU0IiB5PSI1NCIgd2lkdGg9IjMyIiBoZWlnaHQ9IjQ4IiByeD0iMyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjOTNjNWZkIiBzdHJva2Utd2lkdGg9IjEuMiIgc3Ryb2tlLWRhc2hhcnJheT0iMyAyIi8+PC9nPgo8dGV4dCB4PSIxNCIgeT0iMTY4IiBmb250LXNpemU9IjE1IiBmaWxsPSIjNmU2ZTczIj5WaXJhciBkYSBlc3F1ZXJkYSBwYXJhIGEgZGlyZWl0YTo8L3RleHQ+PHRleHQgeD0iMTQiIHk9IjE4OCIgZm9udC1zaXplPSIxNSIgZmlsbD0iIzZlNmU3MyI+QXDDs3MgNSBjb21wYXJhw6fDtWVzLCBvIDkgw6kgZW5jb250cmFkby48L3RleHQ+Cjwvc3ZnPgo=",yW=""+new URL("ss-vergleiche-DWgkIvLr.svg",import.meta.url).href,wW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MjAgNDUwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KPGRlZnM+PG1hcmtlciBpZD0iayIgdmlld0JveD0iMCAwIDEwIDEwIiByZWZYPSI5IiByZWZZPSI1IiBtYXJrZXJXaWR0aD0iNiIgbWFya2VySGVpZ2h0PSI2IiBvcmllbnQ9ImF1dG8iPjxwYXRoIGQ9Ik0wIDAgTDEwIDUgTDAgMTAgWiIgZmlsbD0iIzFjMWMxZSIvPjwvbWFya2VyPjxtYXJrZXIgaWQ9ImIiIHZpZXdCb3g9IjAgMCAxMCAxMCIgcmVmWD0iOSIgcmVmWT0iNSIgbWFya2VyV2lkdGg9IjYiIG1hcmtlckhlaWdodD0iNiIgb3JpZW50PSJhdXRvIj48cGF0aCBkPSJNMCAwIEwxMCA1IEwwIDEwIFoiIGZpbGw9IiMxZDRlZDgiLz48L21hcmtlcj48bWFya2VyIGlkPSJvIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2IiBtYXJrZXJIZWlnaHQ9IjYiIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjYjQ1MzA5Ii8+PC9tYXJrZXI+PC9kZWZzPgo8cmVjdCB3aWR0aD0iNDIwIiBoZWlnaHQ9IjQ1MCIgZmlsbD0iI2ZmZmZmZiIvPgo8dGV4dCB4PSIxMCIgeT0iMjIiIGZvbnQtc2l6ZT0iMTUiIGZvbnQtd2VpZ2h0PSI3MDAiPlBhc3NhZ2VtIHBvciB2YWxvcjogdW1hIGPDs3BpYTwvdGV4dD4KPHJlY3QgeD0iMTAiIHk9IjM4IiB3aWR0aD0iMTYwIiBoZWlnaHQ9Ijg2IiByeD0iOCIgZmlsbD0iI2VmZjZmZiIgc3Ryb2tlPSIjMWQ0ZWQ4IiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSIyMCIgeT0iNTgiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiMxZDRlZDgiPlByb2dyYW1hIHByaW5jaXBhbDwvdGV4dD4KPHRleHQgeD0iMTYiIHk9Ijk4IiBmb250LXNpemU9IjEyIj5udW1lcm88L3RleHQ+CjxyZWN0IHg9IjcwIiB5PSI3OCIgd2lkdGg9IjU2IiBoZWlnaHQ9IjMwIiByeD0iNCIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMWMxYzFlIi8+Cjx0ZXh0IHg9Ijk4IiB5PSI5OSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjcwMCI+NTwvdGV4dD4KPHJlY3QgeD0iMjUwIiB5PSIzOCIgd2lkdGg9IjE2MCIgaGVpZ2h0PSI4NiIgcng9IjgiIGZpbGw9IiNmZmY3ZWQiIHN0cm9rZT0iI2I0NTMwOSIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iMjYwIiB5PSI1OCIgZm9udC1zaXplPSIxMyIgZmlsbD0iI2I0NTMwOSI+ZHVwbGljYXI8L3RleHQ+Cjx0ZXh0IHg9IjI2MCIgeT0iOTgiPng8L3RleHQ+CjxyZWN0IHg9IjI4MCIgeT0iNzgiIHdpZHRoPSI4MCIgaGVpZ2h0PSIzMCIgcng9IjQiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzFjMWMxZSIvPgo8dGV4dCB4PSIzMjAiIHk9Ijk5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj48dHNwYW4gZmlsbD0iIzZlNmU3MyIgdGV4dC1kZWNvcmF0aW9uPSJsaW5lLXRocm91Z2giPjU8L3RzcGFuPiA8dHNwYW4gZm9udC13ZWlnaHQ9IjcwMCI+MTA8L3RzcGFuPjwvdGV4dD4KPGxpbmUgeDE9IjEyOCIgeTE9IjkzIiB4Mj0iMjQ4IiB5Mj0iOTMiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1kYXNoYXJyYXk9IjUgNCIgbWFya2VyLWVuZD0idXJsKCNrKSIvPgo8dGV4dCB4PSIyMTAiIHk9Ijg0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIj5jw7NwaWE8L3RleHQ+Cjx0ZXh0IHg9IjEwIiB5PSIxNTAiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiM2ZTZlNzMiPnggcGFzc2EgYSAxMCwgbWFzIG51bWVybyBmaWNhIDUuPC90ZXh0Pgo8dGV4dCB4PSIxMCIgeT0iMTY4IiBmb250LXNpemU9IjEzIiBmaWxsPSIjNmU2ZTczIj5Db21vIHVtYSBmb3RvY8OzcGlhOiBlc2NyZXZlciBuYSBjw7NwaWE8L3RleHQ+Cjx0ZXh0IHg9IjEwIiB5PSIxODYiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiM2ZTZlNzMiPm7Do28gYWx0ZXJhIG8gb3JpZ2luYWwuPC90ZXh0Pgo8bGluZSB4MT0iMTAiIHkxPSIyMDgiIHgyPSI0MTAiIHkyPSIyMDgiIHN0cm9rZT0iI2QxZDFkNiIvPgo8dGV4dCB4PSIxMCIgeT0iMjM2IiBmb250LXNpemU9IjE1IiBmb250LXdlaWdodD0iNzAwIj5QYXNzYWdlbSBwb3IgcmVmZXLDqm5jaWE6IG8gbWVzbW8gYXJyYXk8L3RleHQ+CjxyZWN0IHg9IjEwIiB5PSIyNTIiIHdpZHRoPSIxNjAiIGhlaWdodD0iNjIiIHJ4PSI4IiBmaWxsPSIjZWZmNmZmIiBzdHJva2U9IiMxZDRlZDgiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjIwIiB5PSIyNzIiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiMxZDRlZDgiPlByb2dyYW1hIHByaW5jaXBhbDwvdGV4dD4KPHRleHQgeD0iMjAiIHk9IjMwMCI+ZmlsYTwvdGV4dD4KPGNpcmNsZSBjeD0iMTUwIiBjeT0iMjk1IiByPSI1IiBmaWxsPSIjMWQ0ZWQ4Ii8+CjxyZWN0IHg9IjI1MCIgeT0iMjUyIiB3aWR0aD0iMTYwIiBoZWlnaHQ9IjYyIiByeD0iOCIgZmlsbD0iI2ZmZjdlZCIgc3Ryb2tlPSIjYjQ1MzA5IiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSIyNjAiIHk9IjI3MiIgZm9udC1zaXplPSIxMyIgZmlsbD0iI2I0NTMwOSI+bGltcGFyPC90ZXh0Pgo8dGV4dCB4PSIyNjAiIHk9IjMwMCI+bHVnYXJlczwvdGV4dD4KPGNpcmNsZSBjeD0iMzkwIiBjeT0iMjk1IiByPSI1IiBmaWxsPSIjYjQ1MzA5Ii8+CjxwYXRoIGQ9Ik0xNTAgMzAwIEwxNTAgMzQwIEwxNDAgMzUyIiBmaWxsPSJub25lIiBzdHJva2U9IiMxZDRlZDgiIHN0cm9rZS13aWR0aD0iMS41IiBtYXJrZXItZW5kPSJ1cmwoI2IpIi8+CjxwYXRoIGQ9Ik0zOTAgMzAwIEwzOTAgMzQwIEwzMjIgMzU0IiBmaWxsPSJub25lIiBzdHJva2U9IiNiNDUzMDkiIHN0cm9rZS13aWR0aD0iMS41IiBtYXJrZXItZW5kPSJ1cmwoI28pIi8+CjxyZWN0IHg9IjkwIiB5PSIzNTgiIHdpZHRoPSI2MCIgaGVpZ2h0PSIzMiIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMWMxYzFlIi8+CjxyZWN0IHg9IjE1MCIgeT0iMzU4IiB3aWR0aD0iNjAiIGhlaWdodD0iMzIiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzFjMWMxZSIvPgo8cmVjdCB4PSIyMTAiIHk9IjM1OCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjMyIiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMxYzFjMWUiLz4KPHJlY3QgeD0iMjcwIiB5PSIzNTgiIHdpZHRoPSI2MCIgaGVpZ2h0PSIzMiIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMWMxYzFlIi8+Cjx0ZXh0IHg9IjEyMCIgeT0iMzc5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIj5mYWxzZTwvdGV4dD4KPHRleHQgeD0iMTgwIiB5PSIzNzkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTMiPmZhbHNlPC90ZXh0Pgo8dGV4dCB4PSIyNDAiIHk9IjM3OSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyI+ZmFsc2U8L3RleHQ+Cjx0ZXh0IHg9IjMwMCIgeT0iMzc5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIj5mYWxzZTwvdGV4dD4KPHRleHQgeD0iMTAiIHk9IjQxNiIgZm9udC1zaXplPSIxMyIgZmlsbD0iIzZlNmU3MyI+U8OzIGjDoSB1bSBhcnJheS4gTyBxdWUgbGltcGFyIGFsdGVyYSBhdHJhdsOpcyBkZSBsdWdhcmVzLDwvdGV4dD4KPHRleHQgeD0iMTAiIHk9IjQzNCIgZm9udC1zaXplPSIxMyIgZmlsbD0iIzZlNmU3MyI+byBwcm9ncmFtYSBwcmluY2lwYWwgdsOqIGVtIGZpbGEuPC90ZXh0Pgo8L3N2Zz4K",zW=""+new URL("zk-zeichen-8efNmpGx.svg",import.meta.url).href,IW=""+new URL("schiffe-versenken-CXt1SF0S.svg",import.meta.url).href,kW=""+new URL("ss-binaere-suche-CPsLGldq.svg",import.meta.url).href,SW=""+new URL("ss-bubblesort-Dic2ZfaT.svg",import.meta.url).href,TW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDQgMTk2IiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmaWxsPSIjMWMxYzFlIj4KPHJlY3Qgd2lkdGg9IjQwNCIgaGVpZ2h0PSIxOTYiIGZpbGw9IiNmZmZmZmYiLz4KPHRleHQgeD0iMTQiIHk9IjI0IiBmb250LXdlaWdodD0iNjAwIiBmb250LXNpemU9IjE1Ij5HZXN1Y2h0OiBkaWUgOS4gRGllIEthcnRlbiBzaW5kIGdlbWlzY2h0LjwvdGV4dD4KPGc+PHJlY3QgeD0iMTQiIHk9IjUwIiB3aWR0aD0iNDAiIGhlaWdodD0iNTYiIHJ4PSI1IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMSIvPjx0ZXh0IHg9IjM0LjAiIHk9Ijc1LjIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTgiIGZvbnQtd2VpZ2h0PSI3MDAiIGZpbGw9IiNkYzI2MjYiPjc8L3RleHQ+PHRleHQgeD0iMzQuMCIgeT0iOTUuOTE5OTk5OTk5OTk5OTkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTUiIGZpbGw9IiNkYzI2MjYiPuKZpTwvdGV4dD48L2c+Cjx0ZXh0IHg9IjM0LjAiIHk9IjEzMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxNiIgZm9udC13ZWlnaHQ9IjYwMCIgZmlsbD0iI2RjMjYyNiI+4pyXPC90ZXh0Pgo8dGV4dCB4PSIzNC4wIiB5PSIxNDgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiM2ZTZlNzMiPjEuPC90ZXh0Pgo8Zz48cmVjdCB4PSI2MiIgeT0iNTAiIHdpZHRoPSI0MCIgaGVpZ2h0PSI1NiIgcng9IjUiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIxIi8+PHRleHQgeD0iODIuMCIgeT0iNzUuMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxOCIgZm9udC13ZWlnaHQ9IjcwMCIgZmlsbD0iIzFjMWMxZSI+MzwvdGV4dD48dGV4dCB4PSI4Mi4wIiB5PSI5NS45MTk5OTk5OTk5OTk5OSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxNSIgZmlsbD0iIzFjMWMxZSI+4pmgPC90ZXh0PjwvZz4KPHRleHQgeD0iODIuMCIgeT0iMTMwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE2IiBmb250LXdlaWdodD0iNjAwIiBmaWxsPSIjZGMyNjI2Ij7inJc8L3RleHQ+Cjx0ZXh0IHg9IjgyLjAiIHk9IjE0OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyIgZmlsbD0iIzZlNmU3MyI+Mi48L3RleHQ+CjxnPjxyZWN0IHg9IjExMCIgeT0iNTAiIHdpZHRoPSI0MCIgaGVpZ2h0PSI1NiIgcng9IjUiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIxIi8+PHRleHQgeD0iMTMwLjAiIHk9Ijc1LjIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTgiIGZvbnQtd2VpZ2h0PSI3MDAiIGZpbGw9IiNkYzI2MjYiPjEwPC90ZXh0Pjx0ZXh0IHg9IjEzMC4wIiB5PSI5NS45MTk5OTk5OTk5OTk5OSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxNSIgZmlsbD0iI2RjMjYyNiI+4pmmPC90ZXh0PjwvZz4KPHRleHQgeD0iMTMwLjAiIHk9IjEzMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxNiIgZm9udC13ZWlnaHQ9IjYwMCIgZmlsbD0iI2RjMjYyNiI+4pyXPC90ZXh0Pgo8dGV4dCB4PSIxMzAuMCIgeT0iMTQ4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIiBmaWxsPSIjNmU2ZTczIj4zLjwvdGV4dD4KPGc+PHJlY3QgeD0iMTU4IiB5PSI1MCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjU2IiByeD0iNSIgZmlsbD0iI2YyZjJmNyIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjEiLz48dGV4dCB4PSIxNzguMCIgeT0iNzUuMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxOCIgZm9udC13ZWlnaHQ9IjcwMCIgZmlsbD0iIzFjMWMxZSI+NTwvdGV4dD48dGV4dCB4PSIxNzguMCIgeT0iOTUuOTE5OTk5OTk5OTk5OTkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTUiIGZpbGw9IiMxYzFjMWUiPuKZozwvdGV4dD48L2c+Cjx0ZXh0IHg9IjE3OC4wIiB5PSIxMzAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTYiIGZvbnQtd2VpZ2h0PSI2MDAiIGZpbGw9IiNkYzI2MjYiPuKclzwvdGV4dD4KPHRleHQgeD0iMTc4LjAiIHk9IjE0OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyIgZmlsbD0iIzZlNmU3MyI+NC48L3RleHQ+CjxnPjxyZWN0IHg9IjIwNiIgeT0iNTAiIHdpZHRoPSI0MCIgaGVpZ2h0PSI1NiIgcng9IjUiIGZpbGw9IiNkY2ZjZTciIHN0cm9rZT0iIzE1ODAzZCIgc3Ryb2tlLXdpZHRoPSIzIi8+PHRleHQgeD0iMjI2LjAiIHk9Ijc1LjIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTgiIGZvbnQtd2VpZ2h0PSI3MDAiIGZpbGw9IiMxYzFjMWUiPjk8L3RleHQ+PHRleHQgeD0iMjI2LjAiIHk9Ijk1LjkxOTk5OTk5OTk5OTk5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE1IiBmaWxsPSIjMWMxYzFlIj7imaA8L3RleHQ+PC9nPgo8dGV4dCB4PSIyMjYuMCIgeT0iMTMwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE2IiBmb250LXdlaWdodD0iNjAwIiBmaWxsPSIjMTU4MDNkIj7inJM8L3RleHQ+Cjx0ZXh0IHg9IjIyNi4wIiB5PSIxNDgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiM2ZTZlNzMiPjUuPC90ZXh0Pgo8Zz48cmVjdCB4PSIyNTQiIHk9IjUwIiB3aWR0aD0iNDAiIGhlaWdodD0iNTYiIHJ4PSI1IiBmaWxsPSIjMWQ0ZWQ4IiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMSIvPjxyZWN0IHg9IjI1OCIgeT0iNTQiIHdpZHRoPSIzMiIgaGVpZ2h0PSI0OCIgcng9IjMiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzkzYzVmZCIgc3Ryb2tlLXdpZHRoPSIxLjIiIHN0cm9rZS1kYXNoYXJyYXk9IjMgMiIvPjwvZz4KPGc+PHJlY3QgeD0iMzAyIiB5PSI1MCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjU2IiByeD0iNSIgZmlsbD0iIzFkNGVkOCIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjEiLz48cmVjdCB4PSIzMDYiIHk9IjU0IiB3aWR0aD0iMzIiIGhlaWdodD0iNDgiIHJ4PSIzIiBmaWxsPSJub25lIiBzdHJva2U9IiM5M2M1ZmQiIHN0cm9rZS13aWR0aD0iMS4yIiBzdHJva2UtZGFzaGFycmF5PSIzIDIiLz48L2c+CjxnPjxyZWN0IHg9IjM1MCIgeT0iNTAiIHdpZHRoPSI0MCIgaGVpZ2h0PSI1NiIgcng9IjUiIGZpbGw9IiMxZDRlZDgiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIxIi8+PHJlY3QgeD0iMzU0IiB5PSI1NCIgd2lkdGg9IjMyIiBoZWlnaHQ9IjQ4IiByeD0iMyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjOTNjNWZkIiBzdHJva2Utd2lkdGg9IjEuMiIgc3Ryb2tlLWRhc2hhcnJheT0iMyAyIi8+PC9nPgo8dGV4dCB4PSIxNCIgeT0iMTY4IiBmb250LXNpemU9IjE1IiBmaWxsPSIjNmU2ZTczIj5Wb24gbGlua3MgbmFjaCByZWNodHMgdW1kcmVoZW46PC90ZXh0Pjx0ZXh0IHg9IjE0IiB5PSIxODgiIGZvbnQtc2l6ZT0iMTUiIGZpbGw9IiM2ZTZlNzMiPk5hY2ggNSBWZXJnbGVpY2hlbiBpc3QgZGllIDkgZ2VmdW5kZW4uPC90ZXh0Pgo8L3N2Zz4K",_W=""+new URL("ss-vergleiche-DRqzU2TZ.svg",import.meta.url).href,jW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MjAgNDUwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KPGRlZnM+PG1hcmtlciBpZD0iayIgdmlld0JveD0iMCAwIDEwIDEwIiByZWZYPSI5IiByZWZZPSI1IiBtYXJrZXJXaWR0aD0iNiIgbWFya2VySGVpZ2h0PSI2IiBvcmllbnQ9ImF1dG8iPjxwYXRoIGQ9Ik0wIDAgTDEwIDUgTDAgMTAgWiIgZmlsbD0iIzFjMWMxZSIvPjwvbWFya2VyPjxtYXJrZXIgaWQ9ImIiIHZpZXdCb3g9IjAgMCAxMCAxMCIgcmVmWD0iOSIgcmVmWT0iNSIgbWFya2VyV2lkdGg9IjYiIG1hcmtlckhlaWdodD0iNiIgb3JpZW50PSJhdXRvIj48cGF0aCBkPSJNMCAwIEwxMCA1IEwwIDEwIFoiIGZpbGw9IiMxZDRlZDgiLz48L21hcmtlcj48bWFya2VyIGlkPSJvIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2IiBtYXJrZXJIZWlnaHQ9IjYiIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjYjQ1MzA5Ii8+PC9tYXJrZXI+PC9kZWZzPgo8cmVjdCB3aWR0aD0iNDIwIiBoZWlnaHQ9IjQ1MCIgZmlsbD0iI2ZmZmZmZiIvPgo8dGV4dCB4PSIxMCIgeT0iMjIiIGZvbnQtc2l6ZT0iMTUiIGZvbnQtd2VpZ2h0PSI3MDAiPldlcnTDvGJlcmdhYmU6IGVpbmUgS29waWU8L3RleHQ+CjxyZWN0IHg9IjEwIiB5PSIzOCIgd2lkdGg9IjE2MCIgaGVpZ2h0PSI4NiIgcng9IjgiIGZpbGw9IiNlZmY2ZmYiIHN0cm9rZT0iIzFkNGVkOCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iMjAiIHk9IjU4IiBmb250LXNpemU9IjEzIiBmaWxsPSIjMWQ0ZWQ4Ij5IYXVwdHByb2dyYW1tPC90ZXh0Pgo8dGV4dCB4PSIyMCIgeT0iOTgiPnphaGw8L3RleHQ+CjxyZWN0IHg9IjcwIiB5PSI3OCIgd2lkdGg9IjU2IiBoZWlnaHQ9IjMwIiByeD0iNCIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMWMxYzFlIi8+Cjx0ZXh0IHg9Ijk4IiB5PSI5OSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjcwMCI+NTwvdGV4dD4KPHJlY3QgeD0iMjUwIiB5PSIzOCIgd2lkdGg9IjE2MCIgaGVpZ2h0PSI4NiIgcng9IjgiIGZpbGw9IiNmZmY3ZWQiIHN0cm9rZT0iI2I0NTMwOSIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iMjYwIiB5PSI1OCIgZm9udC1zaXplPSIxMyIgZmlsbD0iI2I0NTMwOSI+dmVyZG9wcGxlPC90ZXh0Pgo8dGV4dCB4PSIyNjAiIHk9Ijk4Ij54PC90ZXh0Pgo8cmVjdCB4PSIyODAiIHk9Ijc4IiB3aWR0aD0iODAiIGhlaWdodD0iMzAiIHJ4PSI0IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMxYzFjMWUiLz4KPHRleHQgeD0iMzIwIiB5PSI5OSIgdGV4dC1hbmNob3I9Im1pZGRsZSI+PHRzcGFuIGZpbGw9IiM2ZTZlNzMiIHRleHQtZGVjb3JhdGlvbj0ibGluZS10aHJvdWdoIj41PC90c3Bhbj4gPHRzcGFuIGZvbnQtd2VpZ2h0PSI3MDAiPjEwPC90c3Bhbj48L3RleHQ+CjxsaW5lIHgxPSIxMjgiIHkxPSI5MyIgeDI9IjI0OCIgeTI9IjkzIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtZGFzaGFycmF5PSI1IDQiIG1hcmtlci1lbmQ9InVybCgjaykiLz4KPHRleHQgeD0iMjEwIiB5PSI4NCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyI+S29waWU8L3RleHQ+Cjx0ZXh0IHg9IjEwIiB5PSIxNTAiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiM2ZTZlNzMiPnggd2lyZCAxMCwgYWJlciB6YWhsIGJsZWlidCA1LjwvdGV4dD4KPHRleHQgeD0iMTAiIHk9IjE2OCIgZm9udC1zaXplPSIxMyIgZmlsbD0iIzZlNmU3MyI+V2llIGJlaSBlaW5lciBGb3Rva29waWU6IFdlciBhdWYgZGVyIEtvcGllIHNjaHJlaWJ0LDwvdGV4dD4KPHRleHQgeD0iMTAiIHk9IjE4NiIgZm9udC1zaXplPSIxMyIgZmlsbD0iIzZlNmU3MyI+w6RuZGVydCBkYXMgT3JpZ2luYWwgbmljaHQuPC90ZXh0Pgo8bGluZSB4MT0iMTAiIHkxPSIyMDgiIHgyPSI0MTAiIHkyPSIyMDgiIHN0cm9rZT0iI2QxZDFkNiIvPgo8dGV4dCB4PSIxMCIgeT0iMjM2IiBmb250LXNpemU9IjE1IiBmb250LXdlaWdodD0iNzAwIj5SZWZlcmVuesO8YmVyZ2FiZTogZGFzc2VsYmUgQXJyYXk8L3RleHQ+CjxyZWN0IHg9IjEwIiB5PSIyNTIiIHdpZHRoPSIxNjAiIGhlaWdodD0iNjIiIHJ4PSI4IiBmaWxsPSIjZWZmNmZmIiBzdHJva2U9IiMxZDRlZDgiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjIwIiB5PSIyNzIiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiMxZDRlZDgiPkhhdXB0cHJvZ3JhbW08L3RleHQ+Cjx0ZXh0IHg9IjIwIiB5PSIzMDAiPnJlaWhlPC90ZXh0Pgo8Y2lyY2xlIGN4PSIxNTAiIGN5PSIyOTUiIHI9IjUiIGZpbGw9IiMxZDRlZDgiLz4KPHJlY3QgeD0iMjUwIiB5PSIyNTIiIHdpZHRoPSIxNjAiIGhlaWdodD0iNjIiIHJ4PSI4IiBmaWxsPSIjZmZmN2VkIiBzdHJva2U9IiNiNDUzMDkiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjI2MCIgeT0iMjcyIiBmb250LXNpemU9IjEzIiBmaWxsPSIjYjQ1MzA5Ij5sZWVyZW48L3RleHQ+Cjx0ZXh0IHg9IjI2MCIgeT0iMzAwIj5wbGFldHplPC90ZXh0Pgo8Y2lyY2xlIGN4PSIzOTAiIGN5PSIyOTUiIHI9IjUiIGZpbGw9IiNiNDUzMDkiLz4KPHBhdGggZD0iTTE1MCAzMDAgTDE1MCAzNDAgTDE0MCAzNTIiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzFkNGVkOCIgc3Ryb2tlLXdpZHRoPSIxLjUiIG1hcmtlci1lbmQ9InVybCgjYikiLz4KPHBhdGggZD0iTTM5MCAzMDAgTDM5MCAzNDAgTDMyMiAzNTQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2I0NTMwOSIgc3Ryb2tlLXdpZHRoPSIxLjUiIG1hcmtlci1lbmQ9InVybCgjbykiLz4KPHJlY3QgeD0iOTAiIHk9IjM1OCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjMyIiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMxYzFjMWUiLz4KPHJlY3QgeD0iMTUwIiB5PSIzNTgiIHdpZHRoPSI2MCIgaGVpZ2h0PSIzMiIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMWMxYzFlIi8+CjxyZWN0IHg9IjIxMCIgeT0iMzU4IiB3aWR0aD0iNjAiIGhlaWdodD0iMzIiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzFjMWMxZSIvPgo8cmVjdCB4PSIyNzAiIHk9IjM1OCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjMyIiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMxYzFjMWUiLz4KPHRleHQgeD0iMTIwIiB5PSIzNzkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTMiPmZhbHNlPC90ZXh0Pgo8dGV4dCB4PSIxODAiIHk9IjM3OSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyI+ZmFsc2U8L3RleHQ+Cjx0ZXh0IHg9IjI0MCIgeT0iMzc5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIj5mYWxzZTwvdGV4dD4KPHRleHQgeD0iMzAwIiB5PSIzNzkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTMiPmZhbHNlPC90ZXh0Pgo8dGV4dCB4PSIxMCIgeT0iNDE2IiBmb250LXNpemU9IjEzIiBmaWxsPSIjNmU2ZTczIj5FcyBnaWJ0IG51ciBlaW4gQXJyYXkuIFdhcyBsZWVyZW4gw7xiZXIgcGxhZXR6ZSDDpG5kZXJ0LDwvdGV4dD4KPHRleHQgeD0iMTAiIHk9IjQzNCIgZm9udC1zaXplPSIxMyIgZmlsbD0iIzZlNmU3MyI+c2llaHQgZGFzIEhhdXB0cHJvZ3JhbW0gdW50ZXIgcmVpaGUuPC90ZXh0Pgo8L3N2Zz4K",CW=""+new URL("zk-zeichen-vYvc3iJg.svg",import.meta.url).href;function AW(i){const e=[];for(const t of i.replace(/\r\n/g,` +`,GL=""+new URL("ada-lovelace-DS_988PF.jpg",import.meta.url).href,HL=""+new URL("aufgabe-mehrwertsteuer-C-TFTrWz.svg",import.meta.url).href,VL=""+new URL("ben-shneiderman-Cev5hrqS.jpg",import.meta.url).href,qL=""+new URL("caesar-ascii-Bix93F5i.svg",import.meta.url).href,QL=""+new URL("caesar-scheibe-CMRPZI6Y.svg",import.meta.url).href,UL=""+new URL("caesar-verschiebung-DIR-lDbs.svg",import.meta.url).href,YL=""+new URL("aufgabe-mehrwertsteuer-CnrZ00ny.svg",import.meta.url).href,$L=""+new URL("kino-saal-C8zaJk4X.svg",import.meta.url).href,KL=""+new URL("kino-schleifen-D7sfo9iK.svg",import.meta.url).href,XL="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgNDkyIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iNDkyIiBmaWxsPSIjZmZmZmZmIi8+CiAgPGcgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiPgogICAgPCEtLSBTdGFydCAtLT4KICAgIDxyZWN0IHg9IjEwMCIgeT0iMTAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMjgiIHJ4PSIxNCIgZmlsbD0iI2QxZjJkOSIvPgogICAgPGxpbmUgeDE9IjE1MCIgeTE9IjM4IiB4Mj0iMTUwIiB5Mj0iNTQiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICAgIDwhLS0gQW53ZWlzdW5nIC0tPgogICAgPHJlY3QgeD0iNTAiIHk9IjU2IiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjMwIiBmaWxsPSIjZTVmMGZmIi8+CiAgICA8bGluZSB4MT0iMTUwIiB5MT0iODYiIHgyPSIxNTAiIHkyPSI5OCIgbWFya2VyLWVuZD0idXJsKCNhKSIvPgogICAgPCEtLSBSYXV0ZSAxIC0tPgogICAgPHBhdGggZD0iTTE1MCAxMDAgTDIzNSAxMjggTDE1MCAxNTYgTDY1IDEyOCBaIiBmaWxsPSIjZmZmNGQ2Ii8+CiAgICA8bGluZSB4MT0iMTUwIiB5MT0iMTU2IiB4Mj0iMTUwIiB5Mj0iMTcyIiBtYXJrZXItZW5kPSJ1cmwoI2EpIi8+CiAgICA8cmVjdCB4PSI1MCIgeT0iMTc0IiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjMwIiBmaWxsPSIjZTVmMGZmIi8+CiAgICA8bGluZSB4MT0iMTUwIiB5MT0iMjA0IiB4Mj0iMTUwIiB5Mj0iMjUwIiBtYXJrZXItZW5kPSJ1cmwoI2EpIi8+CiAgICA8IS0tIG5laW4tV2VnIHVtIGRlbiBLYXN0ZW4gaGVydW0gLS0+CiAgICA8cG9seWxpbmUgcG9pbnRzPSIyMzUsMTI4IDI4NSwxMjggMjg1LDIyMiAxNTAsMjIyIiBmaWxsPSJub25lIiBtYXJrZXItZW5kPSJ1cmwoI2EpIi8+CiAgICA8IS0tIFJhdXRlIDIgLS0+CiAgICA8cGF0aCBkPSJNMTUwIDI1MiBMMjM1IDI4MCBMMTUwIDMwOCBMNjUgMjgwIFoiIGZpbGw9IiNmZmY0ZDYiLz4KICAgIDxsaW5lIHgxPSIyMzUiIHkxPSIyODAiIHgyPSIyNjgiIHkyPSIyODAiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICAgIDxyZWN0IHg9IjI3MCIgeT0iMjY1IiB3aWR0aD0iMTE1IiBoZWlnaHQ9IjMwIiBmaWxsPSIjZTVmMGZmIi8+CiAgICA8IS0tIHp1csO8Y2sgenVyIFByw7xmdW5nIC0tPgogICAgPHBvbHlsaW5lIHBvaW50cz0iMzI3LDI2NSAzMjcsMjM4IDE1MCwyMzgiIGZpbGw9Im5vbmUiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICAgIDxsaW5lIHgxPSIxNTAiIHkxPSIzMDgiIHgyPSIxNTAiIHkyPSIzMjYiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICAgIDxyZWN0IHg9IjUwIiB5PSIzMjgiIHdpZHRoPSIyMDAiIGhlaWdodD0iMzAiIGZpbGw9IiNlNWYwZmYiLz4KICAgIDxsaW5lIHgxPSIxNTAiIHkxPSIzNTgiIHgyPSIxNTAiIHkyPSIzNzQiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICAgIDwhLS0gRW5kZSAtLT4KICAgIDxyZWN0IHg9IjEwMCIgeT0iMzc2IiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjI4IiByeD0iMTQiIGZpbGw9IiNkMWYyZDkiLz4KICA8L2c+CiAgPGcgdGV4dC1hbmNob3I9Im1pZGRsZSI+CiAgICA8dGV4dCB4PSIxNTAiIHk9IjI5Ij5TdGFydDwvdGV4dD4KICAgIDx0ZXh0IHg9IjE1MCIgeT0iNzYiPlB1dCBhIGN1cCBvbiB0aGUgdGFibGU8L3RleHQ+CiAgICA8dGV4dCB4PSIxNTAiIHk9IjEzMyI+U3VnYXIgd2FudGVkPzwvdGV4dD4KICAgIDx0ZXh0IHg9IjE1MCIgeT0iMTk0Ij5BZGQgc3VnYXI8L3RleHQ+CiAgICA8dGV4dCB4PSIxNTAiIHk9IjI4NSI+VGVhIHN0aWxsIHRvbyBob3Q/PC90ZXh0PgogICAgPHRleHQgeD0iMzI3LjUiIHk9IjI4NSI+V2FpdCAxIG1pbnV0ZTwvdGV4dD4KICAgIDx0ZXh0IHg9IjE1MCIgeT0iMzQ4Ij5EcmluayB0aGUgdGVhPC90ZXh0PgogICAgPHRleHQgeD0iMTUwIiB5PSIzOTUiPkVuZDwvdGV4dD4KICA8L2c+CiAgPGcgZm9udC1zaXplPSIxMiIgZm9udC13ZWlnaHQ9IjYwMCI+CiAgICA8dGV4dCB4PSIxNTYiIHk9IjE2OCIgZmlsbD0iIzI0OGEzZCI+eWVzPC90ZXh0PgogICAgPHRleHQgeD0iMjQyIiB5PSIxMjIiIGZpbGw9IiNkNzAwMTUiPm5vPC90ZXh0PgogICAgPHRleHQgeD0iMjQwIiB5PSIyNzQiIGZpbGw9IiMyNDhhM2QiPnllczwvdGV4dD4KICAgIDx0ZXh0IHg9IjE1NiIgeT0iMzIwIiBmaWxsPSIjZDcwMDE1Ij5ubzwvdGV4dD4KICA8L2c+CiAgPCEtLSBMZWdlbmRlIC0tPgogIDxsaW5lIHgxPSIxMCIgeTE9IjQxOCIgeDI9IjM5MCIgeTI9IjQxOCIgc3Ryb2tlPSIjZDFkMWQ2Ii8+CiAgPGcgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjEuNSI+CiAgICA8cmVjdCB4PSI0MCIgeT0iNDMwIiB3aWR0aD0iMzYiIGhlaWdodD0iMTgiIHJ4PSI5IiBmaWxsPSIjZDFmMmQ5Ii8+CiAgICA8cmVjdCB4PSIyMjAiIHk9IjQzMCIgd2lkdGg9IjM2IiBoZWlnaHQ9IjE4IiBmaWxsPSIjZTVmMGZmIi8+CiAgICA8cGF0aCBkPSJNNTggNDU4IEw3NiA0NjkgTDU4IDQ4MCBMNDAgNDY5IFoiIGZpbGw9IiNmZmY0ZDYiLz4KICAgIDxwYXRoIGQ9Ik0yMjYgNDYwIEwyNTYgNDYwIEwyNTAgNDc4IEwyMjAgNDc4IFoiIGZpbGw9IiNmMmU2ZmYiLz4KICA8L2c+CiAgPGcgZm9udC1zaXplPSIxMiIgZmlsbD0iIzNhM2EzYyI+CiAgICA8dGV4dCB4PSI4NiIgeT0iNDQzIj5TdGFydCBvciBlbmQ8L3RleHQ+CiAgICA8dGV4dCB4PSIyNjYiIHk9IjQ0MyI+U3RhdGVtZW50PC90ZXh0PgogICAgPHRleHQgeD0iODYiIHk9IjQ3MyI+RGVjaXNpb248L3RleHQ+CiAgICA8dGV4dCB4PSIyNjYiIHk9IjQ3MyI+SW5wdXQgb3Igb3V0cHV0PC90ZXh0PgogIDwvZz4KPC9zdmc+Cg==",eW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMTkwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8cmVjdCB3aWR0aD0iNDAwIiBoZWlnaHQ9IjE5MCIgZmlsbD0iI2ZmZmZmZiIvPgogIDx0ZXh0IHg9IjIwIiB5PSIyNCIgZm9udC13ZWlnaHQ9IjYwMCI+V2hlcmUgZG9lcyB0aGUgZWxlbWVudCBsYW5kPzwvdGV4dD4KICA8cmVjdCB4PSIyMCIgeT0iNDAiIHdpZHRoPSIxOTAiIGhlaWdodD0iMzUiIGZpbGw9IiNkYmVhZmUiLz4KICA8cmVjdCB4PSIyMCIgeT0iNzUiIHdpZHRoPSIxOTAiIGhlaWdodD0iMzUiIGZpbGw9IiNkY2ZjZTciLz4KICA8bGluZSB4MT0iMjAiIHkxPSI3NSIgeDI9IjIxMCIgeTI9Ijc1IiBzdHJva2U9IiM2ZTZlNzMiIHN0cm9rZS1kYXNoYXJyYXk9IjQgMyIvPgogIDxyZWN0IHg9IjIwIiB5PSI0MCIgd2lkdGg9IjE5MCIgaGVpZ2h0PSI3MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8dGV4dCB4PSIxMTUiIHk9IjYyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjMWQ0ZWQ4Ij50b3AgaGFsZjwvdGV4dD4KICA8dGV4dCB4PSIxMTUiIHk9Ijk3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjMTU4MDNkIj5ib3R0b20gaGFsZjwvdGV4dD4KICA8dGV4dCB4PSIyMjQiIHk9IjYyIj7ihpIgZ29lcyA8dHNwYW4gZm9udC13ZWlnaHQ9IjYwMCI+aW4gZnJvbnQ8L3RzcGFuPjwvdGV4dD4KICA8dGV4dCB4PSIyMjQiIHk9Ijk3Ij7ihpIgZ29lcyA8dHNwYW4gZm9udC13ZWlnaHQ9IjYwMCI+YWZ0ZXI8L3RzcGFuPjwvdGV4dD4KICA8cmVjdCB4PSIyMCIgeT0iMTMyIiB3aWR0aD0iMTkwIiBoZWlnaHQ9IjQwIiBmaWxsPSIjZmVmM2M3IiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjExNSIgeT0iMTU3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE2Ij7DuDwvdGV4dD4KICA8dGV4dCB4PSIyMjQiIHk9IjE1NyI+4oaSIDx0c3BhbiBmb250LXdlaWdodD0iNjAwIj5yZXBsYWNlczwvdHNwYW4+IGl0PC90ZXh0Pgo8L3N2Zz4K",tW=""+new URL("l03-lochkarte-beschriftet-BjBFZjzb.svg",import.meta.url).href,nW=""+new URL("l03-lochkarte-BB3rWQOm.svg",import.meta.url).href,iW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NjAgMjkwIiBmb250LWZhbWlseT0idWktbW9ub3NwYWNlLCBNZW5sbywgQ29uc29sYXMsIG1vbm9zcGFjZSI+CjxyZWN0IHdpZHRoPSI0NjAiIGhlaWdodD0iMjkwIiBmaWxsPSIjZmZmZmZmIi8+Cjx0ZXh0IHg9IjUwIiB5PSI0NCIgZm9udC1zaXplPSI0MCIgZmlsbD0iIzZlNmU3MyIgdGV4dExlbmd0aD0iMjg4IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmdBbmRHbHlwaHMiPnByaWNlPHRzcGFuIGZpbGw9IiMwMDdhZmYiIGZvbnQtd2VpZ2h0PSI3MDAiPlc8L3RzcGFuPml0aDx0c3BhbiBmaWxsPSIjMDA3YWZmIiBmb250LXdlaWdodD0iNzAwIj5UPC90c3Bhbj5heDwvdGV4dD4KPGxpbmUgeDE9IjE4MiIgeTE9IjU0IiB4Mj0iMTgyIiB5Mj0iODIiIHN0cm9rZT0iIzAwN2FmZiIgc3Ryb2tlLXdpZHRoPSIyLjUiIHN0cm9rZS1kYXNoYXJyYXk9IjUgNCIvPgo8bGluZSB4MT0iMjc4IiB5MT0iNTQiIHgyPSIyNzgiIHkyPSI4MiIgc3Ryb2tlPSIjMDA3YWZmIiBzdHJva2Utd2lkdGg9IjIuNSIgc3Ryb2tlLWRhc2hhcnJheT0iNSA0Ii8+CjxwYXRoIGQ9Ik0yMCAyNzIgSDQ0MCIgc3Ryb2tlPSIjZTVkM2IwIiBzdHJva2Utd2lkdGg9IjQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTU2IDE3MiBMMTUwIDIyNiIgc3Ryb2tlPSIjYjg4YTUyIiBzdHJva2Utd2lkdGg9IjEzIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPHBhdGggZD0iTTE1MCAyMjYgTDE1NiAyNjIiIHN0cm9rZT0iI2I4OGE1MiIgc3Ryb2tlLXdpZHRoPSI4IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPGNpcmNsZSBjeD0iMTUwIiBjeT0iMjI2IiByPSI2IiBmaWxsPSIjN2E1NTMwIiBvcGFjaXR5PSIwLjU1Ii8+CjxlbGxpcHNlIGN4PSIxNjEiIGN5PSIyNjciIHJ4PSIxMSIgcnk9IjUiIGZpbGw9IiM3YTU1MzAiLz4KPHBhdGggZD0iTTMyOCAxNzIgTDMzMiAyMjYiIHN0cm9rZT0iI2I4OGE1MiIgc3Ryb2tlLXdpZHRoPSIxMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjxwYXRoIGQ9Ik0zMzIgMjI2IEwzMjggMjYyIiBzdHJva2U9IiNiODhhNTIiIHN0cm9rZS13aWR0aD0iOCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjxjaXJjbGUgY3g9IjMzMiIgY3k9IjIyNiIgcj0iNiIgZmlsbD0iIzdhNTUzMCIgb3BhY2l0eT0iMC41NSIvPgo8ZWxsaXBzZSBjeD0iMzMzIiBjeT0iMjY3IiByeD0iMTEiIHJ5PSI1IiBmaWxsPSIjN2E1NTMwIi8+CjxwYXRoIGQ9Ik0xMjAgMTQwIEMxMDQgMTUwIDEwNCAxNzYgMTEwIDE5NiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYjg4YTUyIiBzdHJva2Utd2lkdGg9IjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8ZWxsaXBzZSBjeD0iMTEwIiBjeT0iMjAwIiByeD0iNSIgcnk9IjkiIGZpbGw9IiM3YTU1MzAiLz4KPHBhdGggZD0iTTEyMCAxNzIgQzEwOCAxNTIgMTE0IDEyOCAxMzQgMTIyIEMxNDggMTIwIDE1NCA4NCAxODIgODQgQzIxMCA4NCAyMDggMTI2IDIzMCAxMjQgQzI1MiAxMjYgMjUwIDg0IDI3OCA4NCBDMzA2IDg0IDMwOCAxMjIgMzE4IDEyOCBDMzQwIDEzMiAzNDggMTU4IDM2NCAxNTggQzM3NiAxNTggMzc4IDEyNCAzODIgMTEwIEMzODYgOTggNDAwIDk2IDQxMiA5OSBDNDI0IDEwMiA0MzAgMTA4IDQyOCAxMTYgQzQyNiAxMjMgNDE0IDEyNCA0MDQgMTIyIEMzOTYgMTIyIDM5NCAxMjggMzk0IDEzNiBDMzk0IDE2MiAzODggMTg0IDM2NiAxODYgQzM1MCAxODggMzQwIDE4MiAzMzAgMTc4IEMyNjAgMTg4IDIwMCAxODggMTQwIDE4MiBDMTMwIDE4MCAxMjQgMTc3IDEyMCAxNzIgWiIgZmlsbD0iI2QyYTU2YSIgc3Ryb2tlPSIjN2E1NTMwIiBzdHJva2Utd2lkdGg9IjIuNSIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTM0IDE3MiBMMTI4IDIyNiIgc3Ryb2tlPSIjZDJhNTZhIiBzdHJva2Utd2lkdGg9IjEzIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPHBhdGggZD0iTTEyOCAyMjYgTDEzNCAyNjIiIHN0cm9rZT0iI2QyYTU2YSIgc3Ryb2tlLXdpZHRoPSI4IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPGNpcmNsZSBjeD0iMTI4IiBjeT0iMjI2IiByPSI2IiBmaWxsPSIjN2E1NTMwIiBvcGFjaXR5PSIwLjU1Ii8+CjxlbGxpcHNlIGN4PSIxMzkiIGN5PSIyNjciIHJ4PSIxMSIgcnk9IjUiIGZpbGw9IiM3YTU1MzAiLz4KPHBhdGggZD0iTTMwOCAxNzIgTDMxMiAyMjYiIHN0cm9rZT0iI2QyYTU2YSIgc3Ryb2tlLXdpZHRoPSIxMyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjxwYXRoIGQ9Ik0zMTIgMjI2IEwzMDggMjYyIiBzdHJva2U9IiNkMmE1NmEiIHN0cm9rZS13aWR0aD0iOCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjxjaXJjbGUgY3g9IjMxMiIgY3k9IjIyNiIgcj0iNiIgZmlsbD0iIzdhNTUzMCIgb3BhY2l0eT0iMC41NSIvPgo8ZWxsaXBzZSBjeD0iMzEzIiBjeT0iMjY3IiByeD0iMTEiIHJ5PSI1IiBmaWxsPSIjN2E1NTMwIi8+CjxwYXRoIGQ9Ik0zOTAgMTAzIEwzODYgOTIgTDM5OCAxMDAgWiIgZmlsbD0iI2QyYTU2YSIgc3Ryb2tlPSIjN2E1NTMwIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPGNpcmNsZSBjeD0iNDA2IiBjeT0iMTA3IiByPSIzLjIiIGZpbGw9IiMxYzFjMWUiLz4KPHBhdGggZD0iTTQwMSAxMDQgUTQwNiAxMDEgNDExIDEwNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjN2E1NTMwIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8cGF0aCBkPSJNNDIyIDEwNyBxNCAxIDUgNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjN2E1NTMwIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8cGF0aCBkPSJNNDE2IDExOSBRNDIyIDExOCA0MjcgMTE3IiBmaWxsPSJub25lIiBzdHJva2U9IiM3YTU1MzAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+Cjwvc3ZnPgo=",aW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjEwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8cmVjdCB3aWR0aD0iNDAwIiBoZWlnaHQ9IjIxMCIgZmlsbD0iI2ZmZmZmZiIvPgogIDx0ZXh0IHg9IjIwMCIgeT0iMjQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtZmFtaWx5PSJ1aS1tb25vc3BhY2UsIE1lbmxvLCBDb25zb2xhcywgbW9ub3NwYWNlIiBmb250LXNpemU9IjE2Ij5pbnQgYWdlID0gMTQ8L3RleHQ+CiAgPHBhdGggZD0iTTEzMCA3MCBMMTcwIDUwIEwzMDAgNTAgTDI2MCA3MCBaIiBmaWxsPSIjYzk4YTNjIiBzdHJva2U9IiM4YTVhMWYiIHN0cm9rZS13aWR0aD0iMiIvPgogIDxyZWN0IHg9IjE4MCIgeT0iMzQiIHdpZHRoPSI0NCIgaGVpZ2h0PSI1MCIgcng9IjMiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KICA8dGV4dCB4PSIyMDIiIHk9IjYwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjIwIiBmb250LXdlaWdodD0iNzAwIj4xNDwvdGV4dD4KICA8cmVjdCB4PSIxMzAiIHk9IjcwIiB3aWR0aD0iMTMwIiBoZWlnaHQ9IjEwMCIgZmlsbD0iI2U5Yjg3MiIgc3Ryb2tlPSIjOGE1YTFmIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8cGF0aCBkPSJNMjYwIDcwIEwzMDAgNTAgTDMwMCAxNTAgTDI2MCAxNzAgWiIgZmlsbD0iI2Q0OWE0YyIgc3Ryb2tlPSIjOGE1YTFmIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8cmVjdCB4PSIxNTAiIHk9IjEwMCIgd2lkdGg9IjkwIiBoZWlnaHQ9IjMwIiByeD0iNCIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjOGE1YTFmIi8+CiAgPHRleHQgeD0iMTk1IiB5PSIxMjAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSI2MDAiPmFnZTwvdGV4dD4KICA8cmVjdCB4PSIxMzgiIHk9IjE0MiIgd2lkdGg9IjM0IiBoZWlnaHQ9IjIwIiByeD0iMTAiIGZpbGw9IiMwMDdhZmYiLz4KICA8dGV4dCB4PSIxNTUiIHk9IjE1NiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMiIgZmlsbD0iI2ZmZmZmZiIgZm9udC13ZWlnaHQ9IjYwMCI+aW50PC90ZXh0PgogIDxnIHN0cm9rZT0iIzZlNmU3MyI+CiAgICA8bGluZSB4MT0iMzEwIiB5MT0iNDgiIHgyPSIyMjYiIHkyPSI1MiIvPgogICAgPGxpbmUgeDE9IjMxMCIgeTE9IjExNSIgeDI9IjI0MiIgeTI9IjExNSIvPgogICAgPGxpbmUgeDE9IjgwIiB5MT0iMTUyIiB4Mj0iMTM0IiB5Mj0iMTUyIi8+CiAgPC9nPgogIDx0ZXh0IHg9IjMxNiIgeT0iNTIiPlZhbHVlPC90ZXh0PgogIDx0ZXh0IHg9IjMxNiIgeT0iMTE5Ij5OYW1lPC90ZXh0PgogIDx0ZXh0IHg9IjgiIHk9IjE1NiI+RGF0YSB0eXBlPC90ZXh0PgogIDx0ZXh0IHg9IjIwMCIgeT0iMTk4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj5UaGUgbmFtZSBnZXRzIHlvdSB0byB0aGUgdmFsdWUuPC90ZXh0Pgo8L3N2Zz4K",sW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjAwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMDA3YWZmIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMjAwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPGcgZm9udC1mYW1pbHk9InVpLW1vbm9zcGFjZSwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2UiIGZvbnQtc2l6ZT0iMjAiPgogICAgPHRleHQgeD0iNjAiIHk9IjExMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjcwMCI+cG9pbnRzPC90ZXh0PgogICAgPHRleHQgeD0iMTI1IiB5PSIxMTAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMwMDdhZmYiIGZvbnQtd2VpZ2h0PSI3MDAiPj08L3RleHQ+CiAgICA8dGV4dCB4PSIyNjAiIHk9IjExMCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+cG9pbnRzICsgNTwvdGV4dD4KICA8L2c+CiAgPHJlY3QgeD0iMTgwIiB5PSI4NiIgd2lkdGg9IjE2MCIgaGVpZ2h0PSIzNCIgcng9IjYiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzE1ODAzZCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjYwIiB5PSIxNDgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMxNTgwM2QiPuKRoCB3b3JrIG91dCB0aGUgcmlnaHQ6IDEwICsgNSA9IDE1PC90ZXh0PgogIDxwYXRoIGQ9Ik0yNTAgODIgQzIzMCAzMCwgOTAgMzAsIDY0IDg0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDdhZmYiIHN0cm9rZS13aWR0aD0iMi41IiBtYXJrZXItZW5kPSJ1cmwoI2EpIi8+CiAgPHRleHQgeD0iMTYwIiB5PSIzNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzAwN2FmZiI+4pGhIHN0b3JlIHRoZSByZXN1bHQgb24gdGhlIGxlZnQ8L3RleHQ+CiAgPHJlY3QgeD0iMjAiIHk9IjE2NCIgd2lkdGg9IjM2MCIgaGVpZ2h0PSIyNiIgcng9IjYiIGZpbGw9IiNmMmYyZjciLz4KICA8dGV4dCB4PSIyMDAiIHk9IjE4MiIgdGV4dC1hbmNob3I9Im1pZGRsZSI+cG9pbnRzIGJlZm9yZTogPHRzcGFuIGZvbnQtd2VpZ2h0PSI3MDAiPjEwPC90c3Bhbj4gICDihpIgICBwb2ludHMgYWZ0ZXI6IDx0c3BhbiBmb250LXdlaWdodD0iNzAwIj4xNTwvdHNwYW4+PC90ZXh0Pgo8L3N2Zz4K",rW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjYwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMjYwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPGcgc3Ryb2tlPSIjNmU2ZTczIiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9Im5vbmUiPgogICAgPHBhdGggZD0iTTQwIDExMCBMNDggMTgwIEwxMDIgMTgwIEwxMTAgMTEwIi8+CiAgICA8cGF0aCBkPSJNMTY1IDExMCBMMTczIDE4MCBMMjI3IDE4MCBMMjM1IDExMCIvPgogICAgPHBhdGggZD0iTTI5MCAxMTAgTDI5OCAxODAgTDM1MiAxODAgTDM2MCAxMTAiLz4KICA8L2c+CiAgPHBhdGggZD0iTTQ0IDEzNSBMNDggMTgwIEwxMDIgMTgwIEwxMDYgMTM1IFoiIGZpbGw9IiNmZGJhNzQiLz4KICA8cGF0aCBkPSJNMjk0IDEzNSBMMjk4IDE4MCBMMzUyIDE4MCBMMzU2IDEzNSBaIiBmaWxsPSIjOTNjNWZkIi8+CiAgPHRleHQgeD0iNzUiIHk9IjIwMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+bGVmdDwvdGV4dD4KICA8dGV4dCB4PSI3NSIgeT0iMjE3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj5qdWljZTwvdGV4dD4KICA8dGV4dCB4PSIyMDAiIHk9IjIwMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+dGVtcDwvdGV4dD4KICA8dGV4dCB4PSIyMDAiIHk9IjIxNyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzZlNmU3MyI+ZW1wdHk8L3RleHQ+CiAgPHRleHQgeD0iMzI1IiB5PSIyMDAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSI2MDAiPnJpZ2h0PC90ZXh0PgogIDx0ZXh0IHg9IjMyNSIgeT0iMjE3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj53YXRlcjwvdGV4dD4KICA8ZyBmaWxsPSJub25lIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI2EpIj4KICAgIDxwYXRoIGQ9Ik04OCAxMDQgQzExMCA3MCwgMTYwIDcwLCAxODYgMTA0Ii8+CiAgICA8cGF0aCBkPSJNMzE4IDEwNCBDMjcwIDE1LCAxMzAgMTUsIDgyIDEwNCIvPgogICAgPHBhdGggZD0iTTIxNCAxMDQgQzI0MCA3MCwgMjkwIDcwLCAzMTIgMTA0Ii8+CiAgPC9nPgogIDxnIGZvbnQtd2VpZ2h0PSI3MDAiIHRleHQtYW5jaG9yPSJtaWRkbGUiPgogICAgPGNpcmNsZSBjeD0iMTM3IiBjeT0iODAiIHI9IjExIiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMxYzFjMWUiLz48dGV4dCB4PSIxMzciIHk9Ijg1Ij4xPC90ZXh0PgogICAgPGNpcmNsZSBjeD0iMjAwIiBjeT0iMzgiIHI9IjExIiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMxYzFjMWUiLz48dGV4dCB4PSIyMDAiIHk9IjQzIj4yPC90ZXh0PgogICAgPGNpcmNsZSBjeD0iMjYzIiBjeT0iODAiIHI9IjExIiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMxYzFjMWUiLz48dGV4dCB4PSIyNjMiIHk9Ijg1Ij4zPC90ZXh0PgogIDwvZz4KICA8ZyB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LWZhbWlseT0idWktbW9ub3NwYWNlLCBNZW5sbywgQ29uc29sYXMsIG1vbm9zcGFjZSIgZm9udC1zaXplPSIxMiI+CiAgICA8dGV4dCB4PSI3MCIgeT0iMjQ3Ij4xOiB0ZW1wID0gbGVmdDwvdGV4dD4KICAgIDx0ZXh0IHg9IjIwMCIgeT0iMjQ3Ij4yOiBsZWZ0ID0gcmlnaHQ8L3RleHQ+CiAgICA8dGV4dCB4PSIzMzAiIHk9IjI0NyI+MzogcmlnaHQgPSB0ZW1wPC90ZXh0PgogIDwvZz4KPC9zdmc+Cg==",oW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMTUwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8cmVjdCB3aWR0aD0iNDAwIiBoZWlnaHQ9IjE1MCIgZmlsbD0iI2ZmZmZmZiIvPgogIDxyZWN0IHg9IjIwIiB5PSI1MCIgd2lkdGg9IjcwIiBoZWlnaHQ9IjI0IiBmaWxsPSIjZmVlMmUyIi8+PHJlY3QgeD0iMzEwIiB5PSI1MCIgd2lkdGg9IjcwIiBoZWlnaHQ9IjI0IiBmaWxsPSIjZmVlMmUyIi8+CiAgPHJlY3QgeD0iOTAiIHk9IjUwIiB3aWR0aD0iMjIwIiBoZWlnaHQ9IjI0IiBmaWxsPSIjZGNmY2U3Ii8+CiAgPGxpbmUgeDE9IjIwIiB5MT0iNzQiIHgyPSIzODAiIHkyPSI3NCIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8bGluZSB4MT0iNDYiIHkxPSI2OCIgeDI9IjQ2IiB5Mj0iODAiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIyIi8+PHRleHQgeD0iNDYiIHk9Ijk4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj4wPC90ZXh0PgogIDxsaW5lIHgxPSI5MCIgeTE9IjY4IiB4Mj0iOTAiIHkyPSI4MCIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz48dGV4dCB4PSI5MCIgeT0iOTgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPjE8L3RleHQ+CiAgPGxpbmUgeDE9IjEzNCIgeTE9IjY4IiB4Mj0iMTM0IiB5Mj0iODAiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIyIi8+PHRleHQgeD0iMTM0IiB5PSI5OCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+MjwvdGV4dD4KICA8bGluZSB4MT0iMTc4IiB5MT0iNjgiIHgyPSIxNzgiIHkyPSI4MCIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz48dGV4dCB4PSIxNzgiIHk9Ijk4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj4zPC90ZXh0PgogIDxsaW5lIHgxPSIyMjIiIHkxPSI2OCIgeDI9IjIyMiIgeTI9IjgwIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMiIvPjx0ZXh0IHg9IjIyMiIgeT0iOTgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPjQ8L3RleHQ+CiAgPGxpbmUgeDE9IjI2NiIgeTE9IjY4IiB4Mj0iMjY2IiB5Mj0iODAiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIyIi8+PHRleHQgeD0iMjY2IiB5PSI5OCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+NTwvdGV4dD4KICA8bGluZSB4MT0iMzEwIiB5MT0iNjgiIHgyPSIzMTAiIHkyPSI4MCIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz48dGV4dCB4PSIzMTAiIHk9Ijk4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj42PC90ZXh0PgogIDxsaW5lIHgxPSIzNTQiIHkxPSI2OCIgeDI9IjM1NCIgeTI9IjgwIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMiIvPjx0ZXh0IHg9IjM1NCIgeT0iOTgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPjc8L3RleHQ+CiAgPGNpcmNsZSBjeD0iOTAiIGN5PSI3NCIgcj0iNiIgZmlsbD0iIzE1ODAzZCIvPjxjaXJjbGUgY3g9IjMxMCIgY3k9Ijc0IiByPSI2IiBmaWxsPSIjMTU4MDNkIi8+CiAgPHRleHQgeD0iMjAwIiB5PSI0MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzE1ODAzZCIgZm9udC13ZWlnaHQ9IjYwMCI+dmFsaWQ8L3RleHQ+CiAgPHRleHQgeD0iNDAiIHk9IjQwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjYjkxYzFjIiBmb250LXdlaWdodD0iNjAwIj5pbnZhbGlkPC90ZXh0Pjx0ZXh0IHg9IjM2MCIgeT0iNDAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiNiOTFjMWMiIGZvbnQtd2VpZ2h0PSI2MDAiPmludmFsaWQ8L3RleHQ+CiAgPGcgZm9udC1mYW1pbHk9InVpLW1vbm9zcGFjZSwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2UiIGZvbnQtc2l6ZT0iMTMiIHRleHQtYW5jaG9yPSJtaWRkbGUiPgogICAgPHRleHQgeD0iMjAwIiB5PSIxMjQiIGZpbGw9IiMxNTgwM2QiPmdyYWRlICZndDs9IDEgJmFtcDsmYW1wOyBncmFkZSAmbHQ7PSA2PC90ZXh0PgogICAgPHRleHQgeD0iMjAwIiB5PSIxNDIiIGZpbGw9IiNiOTFjMWMiPmdyYWRlICZsdDsgMSB8fCBncmFkZSAmZ3Q7IDY8L3RleHQ+CiAgPC9nPgo8L3N2Zz4K",lW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjMwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMjMwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHRleHQgeD0iMjAiIHk9IjI0IiBmb250LXdlaWdodD0iNjAwIj5Ib3cgdGhlIHdoaWxlIGxvb3AgcnVuczwvdGV4dD4KICA8cmVjdCB4PSIxMjAiIHk9IjQ0IiB3aWR0aD0iMTYwIiBoZWlnaHQ9IjQwIiByeD0iMjAiIGZpbGw9IiNmZWYzYzciIHN0cm9rZT0iI2I0NTMwOSIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjAwIiB5PSI2OSIgdGV4dC1hbmNob3I9Im1pZGRsZSI+4pGgIGNoZWNrIHRoZSBjb25kaXRpb248L3RleHQ+CiAgPHJlY3QgeD0iMTIwIiB5PSIxMjgiIHdpZHRoPSIxNjAiIGhlaWdodD0iNDAiIHJ4PSI2IiBmaWxsPSIjZGJlYWZlIiBzdHJva2U9IiMxZDRlZDgiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjIwMCIgeT0iMTUzIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj7ikaEgcnVuIHRoZSBpbnNpZGU8L3RleHQ+CiAgPGcgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNhKSI+CiAgICA8bGluZSB4MT0iMjAwIiB5MT0iODQiIHgyPSIyMDAiIHkyPSIxMjYiLz4KICAgIDxwYXRoIGQ9Ik0xMjAgMTQ4IEM4MCAxNDgsIDgwIDY0LCAxMTggNjQiLz4KICAgIDxwYXRoIGQ9Ik0yODAgNjQgTDM0MCA2NCBMMzQwIDIwMCBMMjgyIDIwMCIvPgogIDwvZz4KICA8dGV4dCB4PSIyMDgiIHk9IjExMCIgZmlsbD0iIzE1ODAzZCIgZm9udC13ZWlnaHQ9IjYwMCI+dHJ1ZTwvdGV4dD4KICA8dGV4dCB4PSIzOCIgeT0iMTEwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj5iYWNrPC90ZXh0PgogIDx0ZXh0IHg9IjM4IiB5PSIxMjYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiM2ZTZlNzMiPnRvIHRoZSB0b3A8L3RleHQ+CiAgPHRleHQgeD0iMzQ4IiB5PSIxMzQiIGZpbGw9IiNiOTFjMWMiIGZvbnQtd2VpZ2h0PSI2MDAiPmZhbHNlPC90ZXh0PgogIDx0ZXh0IHg9IjI3NiIgeT0iMjA1IiB0ZXh0LWFuY2hvcj0iZW5kIj5jb250aW51ZSBiZWxvdyB0aGUgbG9vcDwvdGV4dD4KPC9zdmc+Cg==",uW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjMwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMjMwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHRleHQgeD0iMTAwIiB5PSIyMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+cHJlLXRlc3QgKHdoaWxlKTwvdGV4dD4KICA8dGV4dCB4PSIzMDAiIHk9IjIyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iNjAwIj5wb3N0LXRlc3QgKGRvLXdoaWxlKTwvdGV4dD4KICA8bGluZSB4MT0iMjAwIiB5MT0iMTAiIHgyPSIyMDAiIHkyPSIyMjAiIHN0cm9rZT0iI2QxZDFkNiIvPgogIDxyZWN0IHg9IjM1IiB5PSI0NCIgd2lkdGg9IjEzMCIgaGVpZ2h0PSIzNiIgcng9IjE4IiBmaWxsPSIjZmVmM2M3IiBzdHJva2U9IiNiNDUzMDkiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjEwMCIgeT0iNjciIHRleHQtYW5jaG9yPSJtaWRkbGUiPuKRoCBjb25kaXRpb248L3RleHQ+CiAgPHJlY3QgeD0iMzUiIHk9IjEyNCIgd2lkdGg9IjEzMCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNkYmVhZmUiIHN0cm9rZT0iIzFkNGVkOCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMTAwIiB5PSIxNDciIHRleHQtYW5jaG9yPSJtaWRkbGUiPuKRoSBpbnNpZGU8L3RleHQ+CiAgPHJlY3QgeD0iMjM1IiB5PSI0NCIgd2lkdGg9IjEzMCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNkYmVhZmUiIHN0cm9rZT0iIzFkNGVkOCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMzAwIiB5PSI2NyIgdGV4dC1hbmNob3I9Im1pZGRsZSI+4pGgIGluc2lkZTwvdGV4dD4KICA8cmVjdCB4PSIyMzUiIHk9IjEyNCIgd2lkdGg9IjEzMCIgaGVpZ2h0PSIzNiIgcng9IjE4IiBmaWxsPSIjZmVmM2M3IiBzdHJva2U9IiNiNDUzMDkiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjMwMCIgeT0iMTQ3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj7ikaEgY29uZGl0aW9uPC90ZXh0PgogIDxnIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIxLjYiIG1hcmtlci1lbmQ9InVybCgjYSkiPgogICAgPGxpbmUgeDE9IjEwMCIgeTE9IjgwIiB4Mj0iMTAwIiB5Mj0iMTIyIi8+CiAgICA8cGF0aCBkPSJNMzUgMTQyIEM4IDE0MiwgOCA2MiwgMzMgNjIiLz4KICAgIDxsaW5lIHgxPSIzMDAiIHkxPSI4MCIgeDI9IjMwMCIgeTI9IjEyMiIvPgogICAgPHBhdGggZD0iTTM2NSAxNDIgQzM5MiAxNDIsIDM5MiA2MiwgMzY3IDYyIi8+CiAgPC9nPgogIDx0ZXh0IHg9IjEwNiIgeT0iMTA2IiBmaWxsPSIjMTU4MDNkIiBmb250LXdlaWdodD0iNjAwIj50cnVlPC90ZXh0PgogIDx0ZXh0IHg9IjM4MCIgeT0iMTA2IiB0ZXh0LWFuY2hvcj0iZW5kIiBmaWxsPSIjMTU4MDNkIiBmb250LXdlaWdodD0iNjAwIj50cnVlPC90ZXh0PgogIDx0ZXh0IHg9IjEwMCIgeT0iMTkwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj5JZiB0aGUgY29uZGl0aW9uIGlzIGZhbHNlIGF0IG9uY2UsPC90ZXh0PgogIDx0ZXh0IHg9IjEwMCIgeT0iMjA2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj50aGUgaW5zaWRlIHJ1bnMgPHRzcGFuIGZvbnQtd2VpZ2h0PSI3MDAiIGZpbGw9IiMxYzFjMWUiPm5ldmVyPC90c3Bhbj4uPC90ZXh0PgogIDx0ZXh0IHg9IjMwMCIgeT0iMTkwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj5UaGUgaW5zaWRlIGFsd2F5cyBydW5zPC90ZXh0PgogIDx0ZXh0IHg9IjMwMCIgeT0iMjA2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj48dHNwYW4gZm9udC13ZWlnaHQ9IjcwMCIgZmlsbD0iIzFjMWMxZSI+YXQgbGVhc3Qgb25jZTwvdHNwYW4+LjwvdGV4dD4KPC9zdmc+Cg==",mW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjUwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMjUwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHJlY3QgeD0iMTIwIiB5PSIxNCIgd2lkdGg9IjE2MCIgaGVpZ2h0PSIzNCIgcng9IjYiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjAwIiB5PSIzNiIgdGV4dC1hbmNob3I9Im1pZGRsZSI+4pGgIFN0YXJ0IDx0c3BhbiBmaWxsPSIjNmU2ZTczIj4ob25seSBvbmNlKTwvdHNwYW4+PC90ZXh0PgogIDxyZWN0IHg9IjEyMCIgeT0iNzYiIHdpZHRoPSIxNjAiIGhlaWdodD0iMzQiIHJ4PSIxNyIgZmlsbD0iI2ZlZjNjNyIgc3Ryb2tlPSIjYjQ1MzA5IiBzdHJva2Utd2lkdGg9IjIiLz4KICA8dGV4dCB4PSIyMDAiIHk9Ijk4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj7ikaEgY2hlY2sgdGhlIGNvbmRpdGlvbjwvdGV4dD4KICA8cmVjdCB4PSIxMjAiIHk9IjEzOCIgd2lkdGg9IjE2MCIgaGVpZ2h0PSIzNCIgcng9IjYiIGZpbGw9IiNkYmVhZmUiIHN0cm9rZT0iIzFkNGVkOCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjAwIiB5PSIxNjAiIHRleHQtYW5jaG9yPSJtaWRkbGUiPuKRoiBydW4gdGhlIGluc2lkZTwvdGV4dD4KICA8cmVjdCB4PSIxMjAiIHk9IjIwMCIgd2lkdGg9IjE2MCIgaGVpZ2h0PSIzNCIgcng9IjYiIGZpbGw9IiNkY2ZjZTciIHN0cm9rZT0iIzE1ODAzZCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjAwIiB5PSIyMjIiIHRleHQtYW5jaG9yPSJtaWRkbGUiPuKRoyBzdGVwLCBlLmcuIGkrKzwvdGV4dD4KICA8ZyBmaWxsPSJub25lIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI2EpIj4KICAgIDxsaW5lIHgxPSIyMDAiIHkxPSI0OCIgeDI9IjIwMCIgeTI9Ijc0Ii8+CiAgICA8bGluZSB4MT0iMjAwIiB5MT0iMTEwIiB4Mj0iMjAwIiB5Mj0iMTM2Ii8+CiAgICA8bGluZSB4MT0iMjAwIiB5MT0iMTcyIiB4Mj0iMjAwIiB5Mj0iMTk4Ii8+CiAgICA8cGF0aCBkPSJNMTIwIDIxNyBDNjAgMjE3LCA2MCA5MywgMTE4IDkzIi8+CiAgICA8cGF0aCBkPSJNMjgwIDkzIEwzMzAgOTMiLz4KICA8L2c+CiAgPHRleHQgeD0iMjA4IiB5PSIxMjkiIGZpbGw9IiMxNTgwM2QiIGZvbnQtd2VpZ2h0PSI2MDAiPnRydWU8L3RleHQ+CiAgPHRleHQgeD0iNDgiIHk9IjE2MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzZlNmU3MyI+YmFjazwvdGV4dD4KICA8dGV4dCB4PSI0OCIgeT0iMTc2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj50byDikaE8L3RleHQ+CiAgPHRleHQgeD0iMzAwIiB5PSI4NCIgZmlsbD0iI2I5MWMxYyIgZm9udC13ZWlnaHQ9IjYwMCI+ZmFsc2U8L3RleHQ+CiAgPHRleHQgeD0iMzM2IiB5PSI5OCI+ZG9uZTwvdGV4dD4KPC9zdmc+Cg==",cW=""+new URL("l12-while-zu-for-DddKE_8R.svg",import.meta.url).href,dW=""+new URL("l13-verschachtelt-tabelle-jipYA7Ld.svg",import.meta.url).href,hW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMTkwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMDA3YWZmIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMTkwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHRleHQgeD0iMjAiIHk9IjI0IiBmb250LWZhbWlseT0idWktbW9ub3NwYWNlLCBNZW5sbywgQ29uc29sYXMsIG1vbm9zcGFjZSIgZm9udC1zaXplPSIxNCI+aW50W10gbnVtYmVycyA9IHsyLCA0LCA2LCA4LCAxMH08L3RleHQ+CiAgPHRleHQgeD0iMjAiIHk9IjU0IiBmaWxsPSIjNmU2ZTczIiBmb250LXNpemU9IjEyIj5JbmRleDwvdGV4dD4KICA8dGV4dCB4PSI5MCIgeT0iNTQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMwMDdhZmYiIGZvbnQtd2VpZ2h0PSI3MDAiPjA8L3RleHQ+PHJlY3QgeD0iNjAiIHk9IjYyIiB3aWR0aD0iNjAiIGhlaWdodD0iNDYiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIyIi8+PHRleHQgeD0iOTAiIHk9IjkyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE4IiBmb250LXdlaWdodD0iNjAwIj4yPC90ZXh0PgogIDx0ZXh0IHg9IjE1MCIgeT0iNTQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMwMDdhZmYiIGZvbnQtd2VpZ2h0PSI3MDAiPjE8L3RleHQ+PHJlY3QgeD0iMTIwIiB5PSI2MiIgd2lkdGg9IjYwIiBoZWlnaHQ9IjQ2IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMiIvPjx0ZXh0IHg9IjE1MCIgeT0iOTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTgiIGZvbnQtd2VpZ2h0PSI2MDAiPjQ8L3RleHQ+CiAgPHRleHQgeD0iMjEwIiB5PSI1NCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzAwN2FmZiIgZm9udC13ZWlnaHQ9IjcwMCI+MjwvdGV4dD48cmVjdCB4PSIxODAiIHk9IjYyIiB3aWR0aD0iNjAiIGhlaWdodD0iNDYiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIyIi8+PHRleHQgeD0iMjEwIiB5PSI5MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxOCIgZm9udC13ZWlnaHQ9IjYwMCI+NjwvdGV4dD4KICA8dGV4dCB4PSIyNzAiIHk9IjU0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjMDA3YWZmIiBmb250LXdlaWdodD0iNzAwIj4zPC90ZXh0PjxyZWN0IHg9IjI0MCIgeT0iNjIiIHdpZHRoPSI2MCIgaGVpZ2h0PSI0NiIgZmlsbD0iI2YyZjJmNyIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz48dGV4dCB4PSIyNzAiIHk9IjkyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE4IiBmb250LXdlaWdodD0iNjAwIj44PC90ZXh0PgogIDx0ZXh0IHg9IjMzMCIgeT0iNTQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMwMDdhZmYiIGZvbnQtd2VpZ2h0PSI3MDAiPjQ8L3RleHQ+PHJlY3QgeD0iMzAwIiB5PSI2MiIgd2lkdGg9IjYwIiBoZWlnaHQ9IjQ2IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMiIvPjx0ZXh0IHg9IjMzMCIgeT0iOTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTgiIGZvbnQtd2VpZ2h0PSI2MDAiPjEwPC90ZXh0PgogIDx0ZXh0IHg9IjIwIiB5PSI5MCIgZmlsbD0iIzZlNmU3MyIgZm9udC1zaXplPSIxMiI+VmFsdWU8L3RleHQ+CiAgPGcgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMDA3YWZmIiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNhKSI+PGxpbmUgeDE9IjkwIiB5MT0iMTQwIiB4Mj0iOTAiIHkyPSIxMTIiLz48bGluZSB4MT0iMzMwIiB5MT0iMTQwIiB4Mj0iMzMwIiB5Mj0iMTEyIi8+PC9nPgogIDxnIGZvbnQtZmFtaWx5PSJ1aS1tb25vc3BhY2UsIE1lbmxvLCBDb25zb2xhcywgbW9ub3NwYWNlIiBmb250LXNpemU9IjEzIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj48dGV4dCB4PSI5MCIgeT0iMTU2Ij5udW1iZXJzWzBdIGlzIDI8L3RleHQ+PHRleHQgeD0iMzMwIiB5PSIxNTYiPm51bWJlcnNbNF0gaXMgMTA8L3RleHQ+PC9nPgogIDx0ZXh0IHg9IjIwMCIgeT0iMTgyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj41IHNsb3RzLCBjb3VudGluZyBzdGFydHMgYXQgMDogdGhlIGxhc3QgaW5kZXggaXMgNC48L3RleHQ+Cjwvc3ZnPgo=",gW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDAgMjkwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0NDAiIGhlaWdodD0iMjkwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHJlY3QgeD0iMTEwIiB5PSIxMiIgd2lkdGg9IjIyMCIgaGVpZ2h0PSI0OCIgcng9IjYiIGZpbGw9IiNkYmVhZmUiIHN0cm9rZT0iIzFkNGVkOCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjIwIiB5PSIzMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1mYW1pbHk9InVpLW1vbm9zcGFjZSwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2UiIGZvbnQtd2VpZ2h0PSI2MDAiPmNhbGN1bGF0b3IuY3BwPC90ZXh0PgogIDx0ZXh0IHg9IjIyMCIgeT0iNTEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiMzYTNhM2MiPnNvdXJjZSBjb2RlIGluIEMrKzwvdGV4dD4KICA8ZyBmaWxsPSJub25lIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI2EpIj4KICAgIDxsaW5lIHgxPSIyMjAiIHkxPSI2MCIgeDI9IjgwIiB5Mj0iOTQiLz4KICAgIDxsaW5lIHgxPSI4MCIgeTE9IjEyNiIgeDI9IjgwIiB5Mj0iMTU2Ii8+CiAgICA8bGluZSB4MT0iMjIwIiB5MT0iNjAiIHgyPSIyMjAiIHkyPSI5NCIvPgogICAgPGxpbmUgeDE9IjIyMCIgeTE9IjEyNiIgeDI9IjIyMCIgeTI9IjE1NiIvPgogICAgPGxpbmUgeDE9IjIyMCIgeTE9IjYwIiB4Mj0iMzYwIiB5Mj0iOTQiLz4KICAgIDxsaW5lIHgxPSIzNjAiIHkxPSIxMjYiIHgyPSIzNjAiIHkyPSIxNTYiLz4KICA8L2c+CiAgPHJlY3QgeD0iMTgiIHk9Ijk2IiB3aWR0aD0iMTI0IiBoZWlnaHQ9IjMwIiByeD0iMTUiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KICA8dGV4dCB4PSI4MCIgeT0iMTE2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIj5jb21waWxlcjwvdGV4dD4KICA8cmVjdCB4PSIxOCIgeT0iMTU4IiB3aWR0aD0iMTI0IiBoZWlnaHQ9IjM2IiByeD0iNiIgZmlsbD0iI2ZlZTJlMiIgc3Ryb2tlPSIjYjkxYzFjIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8dGV4dCB4PSI4MCIgeT0iMTgxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iNjAwIj5tYWNoaW5lIGNvZGU8L3RleHQ+CiAgPHJlY3QgeD0iMTgiIHk9IjE5NCIgd2lkdGg9IjEyNCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iODAiIHk9IjIxNyIgdGV4dC1hbmNob3I9Im1pZGRsZSI+V2luZG93czwvdGV4dD4KICA8cmVjdCB4PSIxNTgiIHk9Ijk2IiB3aWR0aD0iMTI0IiBoZWlnaHQ9IjMwIiByeD0iMTUiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KICA8dGV4dCB4PSIyMjAiIHk9IjExNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyI+Y29tcGlsZXI8L3RleHQ+CiAgPHJlY3QgeD0iMTU4IiB5PSIxNTgiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZmVlMmUyIiBzdHJva2U9IiNiOTFjMWMiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjIyMCIgeT0iMTgxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iNjAwIj5tYWNoaW5lIGNvZGU8L3RleHQ+CiAgPHJlY3QgeD0iMTU4IiB5PSIxOTQiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiM2ZTZlNzMiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjIyMCIgeT0iMjE3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5tYWNPUzwvdGV4dD4KICA8cmVjdCB4PSIyOTgiIHk9Ijk2IiB3aWR0aD0iMTI0IiBoZWlnaHQ9IjMwIiByeD0iMTUiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KICA8dGV4dCB4PSIzNjAiIHk9IjExNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyI+Y29tcGlsZXI8L3RleHQ+CiAgPHJlY3QgeD0iMjk4IiB5PSIxNTgiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZmVlMmUyIiBzdHJva2U9IiNiOTFjMWMiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjM2MCIgeT0iMTgxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iNjAwIj5tYWNoaW5lIGNvZGU8L3RleHQ+CiAgPHJlY3QgeD0iMjk4IiB5PSIxOTQiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiM2ZTZlNzMiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjM2MCIgeT0iMjE3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5MaW51eDwvdGV4dD4KICA8dGV4dCB4PSIyMjAiIHk9IjI1OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zdHlsZT0iaXRhbGljIj5Db21waWxlIGFnYWluPC90ZXh0PgogIDx0ZXh0IHg9IjIyMCIgeT0iMjc4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXN0eWxlPSJpdGFsaWMiPmZvciBldmVyeSBzeXN0ZW08L3RleHQ+Cjwvc3ZnPgo=",pW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDAgMzMwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0NDAiIGhlaWdodD0iMzMwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHJlY3QgeD0iMTEwIiB5PSIxMiIgd2lkdGg9IjIyMCIgaGVpZ2h0PSI0OCIgcng9IjYiIGZpbGw9IiNkYmVhZmUiIHN0cm9rZT0iIzFkNGVkOCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjIwIiB5PSIzMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1mYW1pbHk9InVpLW1vbm9zcGFjZSwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2UiIGZvbnQtd2VpZ2h0PSI2MDAiPlRpbWVzVGFibGUuamF2YTwvdGV4dD4KICA8dGV4dCB4PSIyMjAiIHk9IjUxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIiBmaWxsPSIjM2EzYTNjIj5zb3VyY2UgY29kZSwgZm9yIHBlb3BsZTwvdGV4dD4KICA8cmVjdCB4PSIxMTAiIHk9IjEwNCIgd2lkdGg9IjIyMCIgaGVpZ2h0PSI0OCIgcng9IjYiIGZpbGw9IiNmZWYzYzciIHN0cm9rZT0iI2I0NTMwOSIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjIwIiB5PSIxMjQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtZmFtaWx5PSJ1aS1tb25vc3BhY2UsIE1lbmxvLCBDb25zb2xhcywgbW9ub3NwYWNlIiBmb250LXdlaWdodD0iNjAwIj5UaW1lc1RhYmxlLmNsYXNzPC90ZXh0PgogIDx0ZXh0IHg9IjIyMCIgeT0iMTQzIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIiBmaWxsPSIjM2EzYTNjIj5ieXRlY29kZTogQ0EgRkUgQkEgQkUg4oCmPC90ZXh0PgogIDxnIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIxLjgiIG1hcmtlci1lbmQ9InVybCgjYSkiPgogICAgPGxpbmUgeDE9IjIyMCIgeTE9IjYwIiB4Mj0iMjIwIiB5Mj0iMTAyIi8+CiAgICA8bGluZSB4MT0iMjIwIiB5MT0iMTUyIiB4Mj0iODAiIHkyPSIxOTYiLz4KICAgIDxsaW5lIHgxPSIyMjAiIHkxPSIxNTIiIHgyPSIyMjAiIHkyPSIxOTYiLz4KICAgIDxsaW5lIHgxPSIyMjAiIHkxPSIxNTIiIHgyPSIzNjAiIHkyPSIxOTYiLz4KICA8L2c+CiAgPHRleHQgeD0iMjMwIiB5PSI4NiI+Y29tcGlsZXIgamF2YWM8L3RleHQ+CiAgPHJlY3QgeD0iMTgiIHk9IjE5OCIgd2lkdGg9IjEyNCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNkY2ZjZTciIHN0cm9rZT0iIzE1ODAzZCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iODAiIHk9IjIyMSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+SlZNPC90ZXh0PgogIDxyZWN0IHg9IjE4IiB5PSIyMzQiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiM2ZTZlNzMiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjgwIiB5PSIyNTciIHRleHQtYW5jaG9yPSJtaWRkbGUiPldpbmRvd3M8L3RleHQ+CiAgPHJlY3QgeD0iMTU4IiB5PSIxOTgiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZGNmY2U3IiBzdHJva2U9IiMxNTgwM2QiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjIyMCIgeT0iMjIxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iNjAwIj5KVk08L3RleHQ+CiAgPHJlY3QgeD0iMTU4IiB5PSIyMzQiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiM2ZTZlNzMiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjIyMCIgeT0iMjU3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5tYWNPUzwvdGV4dD4KICA8cmVjdCB4PSIyOTgiIHk9IjE5OCIgd2lkdGg9IjEyNCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNkY2ZjZTciIHN0cm9rZT0iIzE1ODAzZCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMzYwIiB5PSIyMjEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSI2MDAiPkpWTTwvdGV4dD4KICA8cmVjdCB4PSIyOTgiIHk9IjIzNCIgd2lkdGg9IjEyNCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMzYwIiB5PSIyNTciIHRleHQtYW5jaG9yPSJtaWRkbGUiPkxpbnV4PC90ZXh0PgogIDx0ZXh0IHg9IjIyMCIgeT0iMjk4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXN0eWxlPSJpdGFsaWMiPldyaXRlIG9uY2UsPC90ZXh0PgogIDx0ZXh0IHg9IjIyMCIgeT0iMzE4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXN0eWxlPSJpdGFsaWMiPnJ1biBhbnl3aGVyZTwvdGV4dD4KPC9zdmc+Cg==",fW=""+new URL("mvc-klick-BIA_bYzu.svg",import.meta.url).href,bW=""+new URL("ss-binaere-suche-D02W1TH_.svg",import.meta.url).href,xW=""+new URL("ss-bubblesort-CmKEoNfO.svg",import.meta.url).href,vW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDQgMTk2IiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmaWxsPSIjMWMxYzFlIj4KPHJlY3Qgd2lkdGg9IjQwNCIgaGVpZ2h0PSIxOTYiIGZpbGw9IiNmZmZmZmYiLz4KPHRleHQgeD0iMTQiIHk9IjI0IiBmb250LXdlaWdodD0iNjAwIiBmb250LXNpemU9IjE1Ij5Mb29raW5nIGZvciB0aGUgOS4gVGhlIGNhcmRzIGFyZSBtaXhlZCB1cC48L3RleHQ+CjxnPjxyZWN0IHg9IjE0IiB5PSI1MCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjU2IiByeD0iNSIgZmlsbD0iI2YyZjJmNyIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjEiLz48dGV4dCB4PSIzNC4wIiB5PSI3NS4yIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE4IiBmb250LXdlaWdodD0iNzAwIiBmaWxsPSIjZGMyNjI2Ij43PC90ZXh0Pjx0ZXh0IHg9IjM0LjAiIHk9Ijk1LjkxOTk5OTk5OTk5OTk5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE1IiBmaWxsPSIjZGMyNjI2Ij7imaU8L3RleHQ+PC9nPgo8dGV4dCB4PSIzNC4wIiB5PSIxMzAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTYiIGZvbnQtd2VpZ2h0PSI2MDAiIGZpbGw9IiNkYzI2MjYiPuKclzwvdGV4dD4KPHRleHQgeD0iMzQuMCIgeT0iMTQ4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIiBmaWxsPSIjNmU2ZTczIj4xLjwvdGV4dD4KPGc+PHJlY3QgeD0iNjIiIHk9IjUwIiB3aWR0aD0iNDAiIGhlaWdodD0iNTYiIHJ4PSI1IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMSIvPjx0ZXh0IHg9IjgyLjAiIHk9Ijc1LjIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTgiIGZvbnQtd2VpZ2h0PSI3MDAiIGZpbGw9IiMxYzFjMWUiPjM8L3RleHQ+PHRleHQgeD0iODIuMCIgeT0iOTUuOTE5OTk5OTk5OTk5OTkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTUiIGZpbGw9IiMxYzFjMWUiPuKZoDwvdGV4dD48L2c+Cjx0ZXh0IHg9IjgyLjAiIHk9IjEzMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxNiIgZm9udC13ZWlnaHQ9IjYwMCIgZmlsbD0iI2RjMjYyNiI+4pyXPC90ZXh0Pgo8dGV4dCB4PSI4Mi4wIiB5PSIxNDgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiM2ZTZlNzMiPjIuPC90ZXh0Pgo8Zz48cmVjdCB4PSIxMTAiIHk9IjUwIiB3aWR0aD0iNDAiIGhlaWdodD0iNTYiIHJ4PSI1IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMSIvPjx0ZXh0IHg9IjEzMC4wIiB5PSI3NS4yIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE4IiBmb250LXdlaWdodD0iNzAwIiBmaWxsPSIjZGMyNjI2Ij4xMDwvdGV4dD48dGV4dCB4PSIxMzAuMCIgeT0iOTUuOTE5OTk5OTk5OTk5OTkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTUiIGZpbGw9IiNkYzI2MjYiPuKZpjwvdGV4dD48L2c+Cjx0ZXh0IHg9IjEzMC4wIiB5PSIxMzAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTYiIGZvbnQtd2VpZ2h0PSI2MDAiIGZpbGw9IiNkYzI2MjYiPuKclzwvdGV4dD4KPHRleHQgeD0iMTMwLjAiIHk9IjE0OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyIgZmlsbD0iIzZlNmU3MyI+My48L3RleHQ+CjxnPjxyZWN0IHg9IjE1OCIgeT0iNTAiIHdpZHRoPSI0MCIgaGVpZ2h0PSI1NiIgcng9IjUiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIxIi8+PHRleHQgeD0iMTc4LjAiIHk9Ijc1LjIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTgiIGZvbnQtd2VpZ2h0PSI3MDAiIGZpbGw9IiMxYzFjMWUiPjU8L3RleHQ+PHRleHQgeD0iMTc4LjAiIHk9Ijk1LjkxOTk5OTk5OTk5OTk5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE1IiBmaWxsPSIjMWMxYzFlIj7imaM8L3RleHQ+PC9nPgo8dGV4dCB4PSIxNzguMCIgeT0iMTMwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE2IiBmb250LXdlaWdodD0iNjAwIiBmaWxsPSIjZGMyNjI2Ij7inJc8L3RleHQ+Cjx0ZXh0IHg9IjE3OC4wIiB5PSIxNDgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiM2ZTZlNzMiPjQuPC90ZXh0Pgo8Zz48cmVjdCB4PSIyMDYiIHk9IjUwIiB3aWR0aD0iNDAiIGhlaWdodD0iNTYiIHJ4PSI1IiBmaWxsPSIjZGNmY2U3IiBzdHJva2U9IiMxNTgwM2QiIHN0cm9rZS13aWR0aD0iMyIvPjx0ZXh0IHg9IjIyNi4wIiB5PSI3NS4yIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE4IiBmb250LXdlaWdodD0iNzAwIiBmaWxsPSIjMWMxYzFlIj45PC90ZXh0Pjx0ZXh0IHg9IjIyNi4wIiB5PSI5NS45MTk5OTk5OTk5OTk5OSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxNSIgZmlsbD0iIzFjMWMxZSI+4pmgPC90ZXh0PjwvZz4KPHRleHQgeD0iMjI2LjAiIHk9IjEzMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxNiIgZm9udC13ZWlnaHQ9IjYwMCIgZmlsbD0iIzE1ODAzZCI+4pyTPC90ZXh0Pgo8dGV4dCB4PSIyMjYuMCIgeT0iMTQ4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIiBmaWxsPSIjNmU2ZTczIj41LjwvdGV4dD4KPGc+PHJlY3QgeD0iMjU0IiB5PSI1MCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjU2IiByeD0iNSIgZmlsbD0iIzFkNGVkOCIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjEiLz48cmVjdCB4PSIyNTgiIHk9IjU0IiB3aWR0aD0iMzIiIGhlaWdodD0iNDgiIHJ4PSIzIiBmaWxsPSJub25lIiBzdHJva2U9IiM5M2M1ZmQiIHN0cm9rZS13aWR0aD0iMS4yIiBzdHJva2UtZGFzaGFycmF5PSIzIDIiLz48L2c+CjxnPjxyZWN0IHg9IjMwMiIgeT0iNTAiIHdpZHRoPSI0MCIgaGVpZ2h0PSI1NiIgcng9IjUiIGZpbGw9IiMxZDRlZDgiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIxIi8+PHJlY3QgeD0iMzA2IiB5PSI1NCIgd2lkdGg9IjMyIiBoZWlnaHQ9IjQ4IiByeD0iMyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjOTNjNWZkIiBzdHJva2Utd2lkdGg9IjEuMiIgc3Ryb2tlLWRhc2hhcnJheT0iMyAyIi8+PC9nPgo8Zz48cmVjdCB4PSIzNTAiIHk9IjUwIiB3aWR0aD0iNDAiIGhlaWdodD0iNTYiIHJ4PSI1IiBmaWxsPSIjMWQ0ZWQ4IiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMSIvPjxyZWN0IHg9IjM1NCIgeT0iNTQiIHdpZHRoPSIzMiIgaGVpZ2h0PSI0OCIgcng9IjMiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzkzYzVmZCIgc3Ryb2tlLXdpZHRoPSIxLjIiIHN0cm9rZS1kYXNoYXJyYXk9IjMgMiIvPjwvZz4KPHRleHQgeD0iMTQiIHk9IjE2OCIgZm9udC1zaXplPSIxNSIgZmlsbD0iIzZlNmU3MyI+VHVybiB0aGVtIG92ZXIgZnJvbSBsZWZ0IHRvIHJpZ2h0OjwvdGV4dD48dGV4dCB4PSIxNCIgeT0iMTg4IiBmb250LXNpemU9IjE1IiBmaWxsPSIjNmU2ZTczIj5BZnRlciA1IGNvbXBhcmlzb25zIHRoZSA5IGlzIGZvdW5kLjwvdGV4dD4KPC9zdmc+Cg==",yW=""+new URL("ss-vergleiche-UczNldcC.svg",import.meta.url).href,wW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MjAgNDUwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KPGRlZnM+PG1hcmtlciBpZD0iayIgdmlld0JveD0iMCAwIDEwIDEwIiByZWZYPSI5IiByZWZZPSI1IiBtYXJrZXJXaWR0aD0iNiIgbWFya2VySGVpZ2h0PSI2IiBvcmllbnQ9ImF1dG8iPjxwYXRoIGQ9Ik0wIDAgTDEwIDUgTDAgMTAgWiIgZmlsbD0iIzFjMWMxZSIvPjwvbWFya2VyPjxtYXJrZXIgaWQ9ImIiIHZpZXdCb3g9IjAgMCAxMCAxMCIgcmVmWD0iOSIgcmVmWT0iNSIgbWFya2VyV2lkdGg9IjYiIG1hcmtlckhlaWdodD0iNiIgb3JpZW50PSJhdXRvIj48cGF0aCBkPSJNMCAwIEwxMCA1IEwwIDEwIFoiIGZpbGw9IiMxZDRlZDgiLz48L21hcmtlcj48bWFya2VyIGlkPSJvIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2IiBtYXJrZXJIZWlnaHQ9IjYiIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjYjQ1MzA5Ii8+PC9tYXJrZXI+PC9kZWZzPgo8cmVjdCB3aWR0aD0iNDIwIiBoZWlnaHQ9IjQ1MCIgZmlsbD0iI2ZmZmZmZiIvPgo8dGV4dCB4PSIxMCIgeT0iMjIiIGZvbnQtc2l6ZT0iMTUiIGZvbnQtd2VpZ2h0PSI3MDAiPkNhbGwgYnkgdmFsdWU6IGEgY29weTwvdGV4dD4KPHJlY3QgeD0iMTAiIHk9IjM4IiB3aWR0aD0iMTYwIiBoZWlnaHQ9Ijg2IiByeD0iOCIgZmlsbD0iI2VmZjZmZiIgc3Ryb2tlPSIjMWQ0ZWQ4IiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSIyMCIgeT0iNTgiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiMxZDRlZDgiPk1haW4gcHJvZ3JhbTwvdGV4dD4KPHRleHQgeD0iMTYiIHk9Ijk4IiBmb250LXNpemU9IjEyIj5udW1iZXI8L3RleHQ+CjxyZWN0IHg9IjcwIiB5PSI3OCIgd2lkdGg9IjU2IiBoZWlnaHQ9IjMwIiByeD0iNCIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMWMxYzFlIi8+Cjx0ZXh0IHg9Ijk4IiB5PSI5OSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjcwMCI+NTwvdGV4dD4KPHJlY3QgeD0iMjUwIiB5PSIzOCIgd2lkdGg9IjE2MCIgaGVpZ2h0PSI4NiIgcng9IjgiIGZpbGw9IiNmZmY3ZWQiIHN0cm9rZT0iI2I0NTMwOSIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iMjYwIiB5PSI1OCIgZm9udC1zaXplPSIxMyIgZmlsbD0iI2I0NTMwOSI+ZG91YmxlSXQ8L3RleHQ+Cjx0ZXh0IHg9IjI2MCIgeT0iOTgiPng8L3RleHQ+CjxyZWN0IHg9IjI4MCIgeT0iNzgiIHdpZHRoPSI4MCIgaGVpZ2h0PSIzMCIgcng9IjQiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzFjMWMxZSIvPgo8dGV4dCB4PSIzMjAiIHk9Ijk5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj48dHNwYW4gZmlsbD0iIzZlNmU3MyIgdGV4dC1kZWNvcmF0aW9uPSJsaW5lLXRocm91Z2giPjU8L3RzcGFuPiA8dHNwYW4gZm9udC13ZWlnaHQ9IjcwMCI+MTA8L3RzcGFuPjwvdGV4dD4KPGxpbmUgeDE9IjEyOCIgeTE9IjkzIiB4Mj0iMjQ4IiB5Mj0iOTMiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1kYXNoYXJyYXk9IjUgNCIgbWFya2VyLWVuZD0idXJsKCNrKSIvPgo8dGV4dCB4PSIyMTAiIHk9Ijg0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIj5jb3B5PC90ZXh0Pgo8dGV4dCB4PSIxMCIgeT0iMTUwIiBmb250LXNpemU9IjEzIiBmaWxsPSIjNmU2ZTczIj54IGJlY29tZXMgMTAsIGJ1dCBudW1iZXIgc3RheXMgNS48L3RleHQ+Cjx0ZXh0IHg9IjEwIiB5PSIxNjgiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiM2ZTZlNzMiPkxpa2UgYSBwaG90b2NvcHk6IHdyaXRpbmcgb24gdGhlIGNvcHk8L3RleHQ+Cjx0ZXh0IHg9IjEwIiB5PSIxODYiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiM2ZTZlNzMiPmRvZXMgbm90IGNoYW5nZSB0aGUgb3JpZ2luYWwuPC90ZXh0Pgo8bGluZSB4MT0iMTAiIHkxPSIyMDgiIHgyPSI0MTAiIHkyPSIyMDgiIHN0cm9rZT0iI2QxZDFkNiIvPgo8dGV4dCB4PSIxMCIgeT0iMjM2IiBmb250LXNpemU9IjE1IiBmb250LXdlaWdodD0iNzAwIj5DYWxsIGJ5IHJlZmVyZW5jZTogdGhlIHNhbWUgYXJyYXk8L3RleHQ+CjxyZWN0IHg9IjEwIiB5PSIyNTIiIHdpZHRoPSIxNjAiIGhlaWdodD0iNjIiIHJ4PSI4IiBmaWxsPSIjZWZmNmZmIiBzdHJva2U9IiMxZDRlZDgiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjIwIiB5PSIyNzIiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiMxZDRlZDgiPk1haW4gcHJvZ3JhbTwvdGV4dD4KPHRleHQgeD0iMjAiIHk9IjMwMCI+cm93PC90ZXh0Pgo8Y2lyY2xlIGN4PSIxNTAiIGN5PSIyOTUiIHI9IjUiIGZpbGw9IiMxZDRlZDgiLz4KPHJlY3QgeD0iMjUwIiB5PSIyNTIiIHdpZHRoPSIxNjAiIGhlaWdodD0iNjIiIHJ4PSI4IiBmaWxsPSIjZmZmN2VkIiBzdHJva2U9IiNiNDUzMDkiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjI2MCIgeT0iMjcyIiBmb250LXNpemU9IjEzIiBmaWxsPSIjYjQ1MzA5Ij5jbGVhcjwvdGV4dD4KPHRleHQgeD0iMjYwIiB5PSIzMDAiPnNlYXRzPC90ZXh0Pgo8Y2lyY2xlIGN4PSIzOTAiIGN5PSIyOTUiIHI9IjUiIGZpbGw9IiNiNDUzMDkiLz4KPHBhdGggZD0iTTE1MCAzMDAgTDE1MCAzNDAgTDE0MCAzNTIiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzFkNGVkOCIgc3Ryb2tlLXdpZHRoPSIxLjUiIG1hcmtlci1lbmQ9InVybCgjYikiLz4KPHBhdGggZD0iTTM5MCAzMDAgTDM5MCAzNDAgTDMyMiAzNTQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2I0NTMwOSIgc3Ryb2tlLXdpZHRoPSIxLjUiIG1hcmtlci1lbmQ9InVybCgjbykiLz4KPHJlY3QgeD0iOTAiIHk9IjM1OCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjMyIiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMxYzFjMWUiLz4KPHJlY3QgeD0iMTUwIiB5PSIzNTgiIHdpZHRoPSI2MCIgaGVpZ2h0PSIzMiIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMWMxYzFlIi8+CjxyZWN0IHg9IjIxMCIgeT0iMzU4IiB3aWR0aD0iNjAiIGhlaWdodD0iMzIiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzFjMWMxZSIvPgo8cmVjdCB4PSIyNzAiIHk9IjM1OCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjMyIiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMxYzFjMWUiLz4KPHRleHQgeD0iMTIwIiB5PSIzNzkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTMiPmZhbHNlPC90ZXh0Pgo8dGV4dCB4PSIxODAiIHk9IjM3OSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyI+ZmFsc2U8L3RleHQ+Cjx0ZXh0IHg9IjI0MCIgeT0iMzc5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIj5mYWxzZTwvdGV4dD4KPHRleHQgeD0iMzAwIiB5PSIzNzkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTMiPmZhbHNlPC90ZXh0Pgo8dGV4dCB4PSIxMCIgeT0iNDE2IiBmb250LXNpemU9IjEzIiBmaWxsPSIjNmU2ZTczIj5UaGVyZSBpcyBvbmx5IG9uZSBhcnJheS4gV2hhdCBjbGVhciBjaGFuZ2VzIHRocm91Z2ggc2VhdHMsPC90ZXh0Pgo8dGV4dCB4PSIxMCIgeT0iNDM0IiBmb250LXNpemU9IjEzIiBmaWxsPSIjNmU2ZTczIj50aGUgbWFpbiBwcm9ncmFtIHNlZXMgdW5kZXIgcm93LjwvdGV4dD4KPC9zdmc+Cg==",zW=""+new URL("zk-zeichen-CgUEhNoK.svg",import.meta.url).href,IW=""+new URL("grace-hopper-DltOT1I5.jpg",import.meta.url).href,kW=""+new URL("hedy-lamarr-MFZMAlPQ.jpg",import.meta.url).href,SW=""+new URL("ike-nassi-D2w47gvX.jpg",import.meta.url).href,TW=""+new URL("katherine-johnson-k17EjVTs.jpg",import.meta.url).href,_W=""+new URL("kino-saal-CYMOok4_.svg",import.meta.url).href,jW=""+new URL("kino-schleifen-DrTQV7dq.svg",import.meta.url).href,AW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgNDkyIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iNDkyIiBmaWxsPSIjZmZmZmZmIi8+CiAgPGcgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiPgogICAgPCEtLSBTdGFydCAtLT4KICAgIDxyZWN0IHg9IjEwMCIgeT0iMTAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMjgiIHJ4PSIxNCIgZmlsbD0iI2QxZjJkOSIvPgogICAgPGxpbmUgeDE9IjE1MCIgeTE9IjM4IiB4Mj0iMTUwIiB5Mj0iNTQiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICAgIDwhLS0gQW53ZWlzdW5nIC0tPgogICAgPHJlY3QgeD0iNTAiIHk9IjU2IiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjMwIiBmaWxsPSIjZTVmMGZmIi8+CiAgICA8bGluZSB4MT0iMTUwIiB5MT0iODYiIHgyPSIxNTAiIHkyPSI5OCIgbWFya2VyLWVuZD0idXJsKCNhKSIvPgogICAgPCEtLSBSYXV0ZSAxIC0tPgogICAgPHBhdGggZD0iTTE1MCAxMDAgTDIzNSAxMjggTDE1MCAxNTYgTDY1IDEyOCBaIiBmaWxsPSIjZmZmNGQ2Ii8+CiAgICA8bGluZSB4MT0iMTUwIiB5MT0iMTU2IiB4Mj0iMTUwIiB5Mj0iMTcyIiBtYXJrZXItZW5kPSJ1cmwoI2EpIi8+CiAgICA8cmVjdCB4PSI1MCIgeT0iMTc0IiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjMwIiBmaWxsPSIjZTVmMGZmIi8+CiAgICA8bGluZSB4MT0iMTUwIiB5MT0iMjA0IiB4Mj0iMTUwIiB5Mj0iMjUwIiBtYXJrZXItZW5kPSJ1cmwoI2EpIi8+CiAgICA8IS0tIG5laW4tV2VnIHVtIGRlbiBLYXN0ZW4gaGVydW0gLS0+CiAgICA8cG9seWxpbmUgcG9pbnRzPSIyMzUsMTI4IDI4NSwxMjggMjg1LDIyMiAxNTAsMjIyIiBmaWxsPSJub25lIiBtYXJrZXItZW5kPSJ1cmwoI2EpIi8+CiAgICA8IS0tIFJhdXRlIDIgLS0+CiAgICA8cGF0aCBkPSJNMTUwIDI1MiBMMjM1IDI4MCBMMTUwIDMwOCBMNjUgMjgwIFoiIGZpbGw9IiNmZmY0ZDYiLz4KICAgIDxsaW5lIHgxPSIyMzUiIHkxPSIyODAiIHgyPSIyNjgiIHkyPSIyODAiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICAgIDxyZWN0IHg9IjI3MCIgeT0iMjY1IiB3aWR0aD0iMTE1IiBoZWlnaHQ9IjMwIiBmaWxsPSIjZTVmMGZmIi8+CiAgICA8IS0tIHp1csO8Y2sgenVyIFByw7xmdW5nIC0tPgogICAgPHBvbHlsaW5lIHBvaW50cz0iMzI3LDI2NSAzMjcsMjM4IDE1MCwyMzgiIGZpbGw9Im5vbmUiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICAgIDxsaW5lIHgxPSIxNTAiIHkxPSIzMDgiIHgyPSIxNTAiIHkyPSIzMjYiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICAgIDxyZWN0IHg9IjUwIiB5PSIzMjgiIHdpZHRoPSIyMDAiIGhlaWdodD0iMzAiIGZpbGw9IiNlNWYwZmYiLz4KICAgIDxsaW5lIHgxPSIxNTAiIHkxPSIzNTgiIHgyPSIxNTAiIHkyPSIzNzQiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICAgIDwhLS0gRW5kZSAtLT4KICAgIDxyZWN0IHg9IjEwMCIgeT0iMzc2IiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjI4IiByeD0iMTQiIGZpbGw9IiNkMWYyZDkiLz4KICA8L2c+CiAgPGcgdGV4dC1hbmNob3I9Im1pZGRsZSI+CiAgICA8dGV4dCB4PSIxNTAiIHk9IjI5Ij5TdGFydDwvdGV4dD4KICAgIDx0ZXh0IHg9IjE1MCIgeT0iNzYiPlRhc3NlIGF1ZiBkZW4gVGlzY2ggc3RlbGxlbjwvdGV4dD4KICAgIDx0ZXh0IHg9IjE1MCIgeT0iMTMzIj5adWNrZXIgZ2V3w7xuc2NodD88L3RleHQ+CiAgICA8dGV4dCB4PSIxNTAiIHk9IjE5NCI+WnVja2VyIGhpbmVpbmdlYmVuPC90ZXh0PgogICAgPHRleHQgeD0iMTUwIiB5PSIyODUiPlRlZSBub2NoIHp1IGhlacOfPzwvdGV4dD4KICAgIDx0ZXh0IHg9IjMyNy41IiB5PSIyODUiPjEgTWludXRlIHdhcnRlbjwvdGV4dD4KICAgIDx0ZXh0IHg9IjE1MCIgeT0iMzQ4Ij5UZWUgdHJpbmtlbjwvdGV4dD4KICAgIDx0ZXh0IHg9IjE1MCIgeT0iMzk1Ij5FbmRlPC90ZXh0PgogIDwvZz4KICA8ZyBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iNjAwIj4KICAgIDx0ZXh0IHg9IjE1NiIgeT0iMTY4IiBmaWxsPSIjMjQ4YTNkIj5qYTwvdGV4dD4KICAgIDx0ZXh0IHg9IjI0MiIgeT0iMTIyIiBmaWxsPSIjZDcwMDE1Ij5uZWluPC90ZXh0PgogICAgPHRleHQgeD0iMjQwIiB5PSIyNzQiIGZpbGw9IiMyNDhhM2QiPmphPC90ZXh0PgogICAgPHRleHQgeD0iMTU2IiB5PSIzMjAiIGZpbGw9IiNkNzAwMTUiPm5laW48L3RleHQ+CiAgPC9nPgogIDwhLS0gTGVnZW5kZSAtLT4KICA8bGluZSB4MT0iMTAiIHkxPSI0MTgiIHgyPSIzOTAiIHkyPSI0MTgiIHN0cm9rZT0iI2QxZDFkNiIvPgogIDxnIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIxLjUiPgogICAgPHJlY3QgeD0iNDAiIHk9IjQzMCIgd2lkdGg9IjM2IiBoZWlnaHQ9IjE4IiByeD0iOSIgZmlsbD0iI2QxZjJkOSIvPgogICAgPHJlY3QgeD0iMjIwIiB5PSI0MzAiIHdpZHRoPSIzNiIgaGVpZ2h0PSIxOCIgZmlsbD0iI2U1ZjBmZiIvPgogICAgPHBhdGggZD0iTTU4IDQ1OCBMNzYgNDY5IEw1OCA0ODAgTDQwIDQ2OSBaIiBmaWxsPSIjZmZmNGQ2Ii8+CiAgICA8cGF0aCBkPSJNMjI2IDQ2MCBMMjU2IDQ2MCBMMjUwIDQ3OCBMMjIwIDQ3OCBaIiBmaWxsPSIjZjJlNmZmIi8+CiAgPC9nPgogIDxnIGZvbnQtc2l6ZT0iMTIiIGZpbGw9IiMzYTNhM2MiPgogICAgPHRleHQgeD0iODYiIHk9IjQ0MyI+U3RhcnQgb2RlciBFbmRlPC90ZXh0PgogICAgPHRleHQgeD0iMjY2IiB5PSI0NDMiPkFud2Vpc3VuZzwvdGV4dD4KICAgIDx0ZXh0IHg9Ijg2IiB5PSI0NzMiPlZlcnp3ZWlndW5nPC90ZXh0PgogICAgPHRleHQgeD0iMjY2IiB5PSI0NzMiPkVpbi0gb2RlciBBdXNnYWJlPC90ZXh0PgogIDwvZz4KPC9zdmc+Cg==",CW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMTkwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8cmVjdCB3aWR0aD0iNDAwIiBoZWlnaHQ9IjE5MCIgZmlsbD0iI2ZmZmZmZiIvPgogIDx0ZXh0IHg9IjIwIiB5PSIyNCIgZm9udC13ZWlnaHQ9IjYwMCI+V29oaW4gbGFuZGV0IGRhcyBFbGVtZW50PzwvdGV4dD4KICA8cmVjdCB4PSIyMCIgeT0iNDAiIHdpZHRoPSIxOTAiIGhlaWdodD0iMzUiIGZpbGw9IiNkYmVhZmUiLz4KICA8cmVjdCB4PSIyMCIgeT0iNzUiIHdpZHRoPSIxOTAiIGhlaWdodD0iMzUiIGZpbGw9IiNkY2ZjZTciLz4KICA8bGluZSB4MT0iMjAiIHkxPSI3NSIgeDI9IjIxMCIgeTI9Ijc1IiBzdHJva2U9IiM2ZTZlNzMiIHN0cm9rZS1kYXNoYXJyYXk9IjQgMyIvPgogIDxyZWN0IHg9IjIwIiB5PSI0MCIgd2lkdGg9IjE5MCIgaGVpZ2h0PSI3MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8dGV4dCB4PSIxMTUiIHk9IjYyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjMWQ0ZWQ4Ij5vYmVyZSBIw6RsZnRlPC90ZXh0PgogIDx0ZXh0IHg9IjExNSIgeT0iOTciIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMxNTgwM2QiPnVudGVyZSBIw6RsZnRlPC90ZXh0PgogIDx0ZXh0IHg9IjIyNCIgeT0iNjIiPuKGkiBrb21tdCA8dHNwYW4gZm9udC13ZWlnaHQ9IjYwMCI+ZGF2b3I8L3RzcGFuPjwvdGV4dD4KICA8dGV4dCB4PSIyMjQiIHk9Ijk3Ij7ihpIga29tbXQgPHRzcGFuIGZvbnQtd2VpZ2h0PSI2MDAiPmRhaGludGVyPC90c3Bhbj48L3RleHQ+CiAgPHJlY3QgeD0iMjAiIHk9IjEzMiIgd2lkdGg9IjE5MCIgaGVpZ2h0PSI0MCIgZmlsbD0iI2ZlZjNjNyIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8dGV4dCB4PSIxMTUiIHk9IjE1NyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxNiI+w7g8L3RleHQ+CiAgPHRleHQgeD0iMjI0IiB5PSIxNTciPuKGkiA8dHNwYW4gZm9udC13ZWlnaHQ9IjYwMCI+ZXJzZXR6dDwvdHNwYW4+IGRlbiBQbGF0emhhbHRlcjwvdGV4dD4KPC9zdmc+Cg==",DW=""+new URL("l03-lochkarte-beschriftet-7hmU_7ct.svg",import.meta.url).href,PW=""+new URL("l03-lochkarte-gzfFEatc.svg",import.meta.url).href,BW=""+new URL("l03-zuse-lochstreifen-B87kqGex.svg",import.meta.url).href,OW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NjAgMjkwIiBmb250LWZhbWlseT0idWktbW9ub3NwYWNlLCBNZW5sbywgQ29uc29sYXMsIG1vbm9zcGFjZSI+CjxyZWN0IHdpZHRoPSI0NjAiIGhlaWdodD0iMjkwIiBmaWxsPSIjZmZmZmZmIi8+Cjx0ZXh0IHg9IjUwIiB5PSI0NCIgZm9udC1zaXplPSI0MCIgZmlsbD0iIzZlNmU3MyIgdGV4dExlbmd0aD0iMzM2IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmdBbmRHbHlwaHMiPnByZWlzPHRzcGFuIGZpbGw9IiMwMDdhZmYiIGZvbnQtd2VpZ2h0PSI3MDAiPk08L3RzcGFuPml0PHRzcGFuIGZpbGw9IiMwMDdhZmYiIGZvbnQtd2VpZ2h0PSI3MDAiPlM8L3RzcGFuPnRldWVyPC90ZXh0Pgo8bGluZSB4MT0iMTgyIiB5MT0iNTQiIHgyPSIxODIiIHkyPSI4MiIgc3Ryb2tlPSIjMDA3YWZmIiBzdHJva2Utd2lkdGg9IjIuNSIgc3Ryb2tlLWRhc2hhcnJheT0iNSA0Ii8+CjxsaW5lIHgxPSIyNTQiIHkxPSI1NCIgeDI9IjI1NCIgeTI9IjgyIiBzdHJva2U9IiMwMDdhZmYiIHN0cm9rZS13aWR0aD0iMi41IiBzdHJva2UtZGFzaGFycmF5PSI1IDQiLz4KPHBhdGggZD0iTTIwIDI3MiBINDQwIiBzdHJva2U9IiNlNWQzYjAiIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjxwYXRoIGQ9Ik0xNTYgMTcyIEwxNTAgMjI2IiBzdHJva2U9IiNiODhhNTIiIHN0cm9rZS13aWR0aD0iMTMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTUwIDIyNiBMMTU2IDI2MiIgc3Ryb2tlPSIjYjg4YTUyIiBzdHJva2Utd2lkdGg9IjgiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8Y2lyY2xlIGN4PSIxNTAiIGN5PSIyMjYiIHI9IjYiIGZpbGw9IiM3YTU1MzAiIG9wYWNpdHk9IjAuNTUiLz4KPGVsbGlwc2UgY3g9IjE2MSIgY3k9IjI2NyIgcng9IjExIiByeT0iNSIgZmlsbD0iIzdhNTUzMCIvPgo8cGF0aCBkPSJNMzA0IDE3MiBMMzA4IDIyNiIgc3Ryb2tlPSIjYjg4YTUyIiBzdHJva2Utd2lkdGg9IjEzIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPHBhdGggZD0iTTMwOCAyMjYgTDMwNCAyNjIiIHN0cm9rZT0iI2I4OGE1MiIgc3Ryb2tlLXdpZHRoPSI4IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPGNpcmNsZSBjeD0iMzA4IiBjeT0iMjI2IiByPSI2IiBmaWxsPSIjN2E1NTMwIiBvcGFjaXR5PSIwLjU1Ii8+CjxlbGxpcHNlIGN4PSIzMDkiIGN5PSIyNjciIHJ4PSIxMSIgcnk9IjUiIGZpbGw9IiM3YTU1MzAiLz4KPHBhdGggZD0iTTEyMCAxNDAgQzEwNCAxNTAgMTA0IDE3NiAxMTAgMTk2IiBmaWxsPSJub25lIiBzdHJva2U9IiNiODhhNTIiIHN0cm9rZS13aWR0aD0iNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjxlbGxpcHNlIGN4PSIxMTAiIGN5PSIyMDAiIHJ4PSI1IiByeT0iOSIgZmlsbD0iIzdhNTUzMCIvPgo8cGF0aCBkPSJNMTIwIDE3MiBDMTA4IDE1MiAxMTQgMTI4IDEzNCAxMjIgQzE0OCAxMjAgMTU0IDg0IDE4MiA4NCBDMjEwIDg0IDIwOCAxMjYgMjE4IDEyNCBDMjI4IDEyNiAyMjYgODQgMjU0IDg0IEMyODIgODQgMjg0IDEyMiAyOTQgMTI4IEMzMTYgMTMyIDMyNCAxNTggMzQwIDE1OCBDMzUyIDE1OCAzNTQgMTI0IDM1OCAxMTAgQzM2MiA5OCAzNzYgOTYgMzg4IDk5IEM0MDAgMTAyIDQwNiAxMDggNDA0IDExNiBDNDAyIDEyMyAzOTAgMTI0IDM4MCAxMjIgQzM3MiAxMjIgMzcwIDEyOCAzNzAgMTM2IEMzNzAgMTYyIDM2NCAxODQgMzQyIDE4NiBDMzI2IDE4OCAzMTYgMTgyIDMwNiAxNzggQzI0OCAxODggMTg4IDE4OCAxNDAgMTgyIEMxMzAgMTgwIDEyNCAxNzcgMTIwIDE3MiBaIiBmaWxsPSIjZDJhNTZhIiBzdHJva2U9IiM3YTU1MzAiIHN0cm9rZS13aWR0aD0iMi41IiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0xMzQgMTcyIEwxMjggMjI2IiBzdHJva2U9IiNkMmE1NmEiIHN0cm9rZS13aWR0aD0iMTMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTI4IDIyNiBMMTM0IDI2MiIgc3Ryb2tlPSIjZDJhNTZhIiBzdHJva2Utd2lkdGg9IjgiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8Y2lyY2xlIGN4PSIxMjgiIGN5PSIyMjYiIHI9IjYiIGZpbGw9IiM3YTU1MzAiIG9wYWNpdHk9IjAuNTUiLz4KPGVsbGlwc2UgY3g9IjEzOSIgY3k9IjI2NyIgcng9IjExIiByeT0iNSIgZmlsbD0iIzdhNTUzMCIvPgo8cGF0aCBkPSJNMjg0IDE3MiBMMjg4IDIyNiIgc3Ryb2tlPSIjZDJhNTZhIiBzdHJva2Utd2lkdGg9IjEzIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPHBhdGggZD0iTTI4OCAyMjYgTDI4NCAyNjIiIHN0cm9rZT0iI2QyYTU2YSIgc3Ryb2tlLXdpZHRoPSI4IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPGNpcmNsZSBjeD0iMjg4IiBjeT0iMjI2IiByPSI2IiBmaWxsPSIjN2E1NTMwIiBvcGFjaXR5PSIwLjU1Ii8+CjxlbGxpcHNlIGN4PSIyODkiIGN5PSIyNjciIHJ4PSIxMSIgcnk9IjUiIGZpbGw9IiM3YTU1MzAiLz4KPHBhdGggZD0iTTM2NiAxMDMgTDM2MiA5MiBMMzc0IDEwMCBaIiBmaWxsPSIjZDJhNTZhIiBzdHJva2U9IiM3YTU1MzAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8Y2lyY2xlIGN4PSIzODIiIGN5PSIxMDciIHI9IjMuMiIgZmlsbD0iIzFjMWMxZSIvPgo8cGF0aCBkPSJNMzc3IDEwNCBRMzgyIDEwMSAzODcgMTA0IiBmaWxsPSJub25lIiBzdHJva2U9IiM3YTU1MzAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjxwYXRoIGQ9Ik0zOTggMTA3IHE0IDEgNSA0IiBmaWxsPSJub25lIiBzdHJva2U9IiM3YTU1MzAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjxwYXRoIGQ9Ik0zOTIgMTE5IFEzOTggMTE4IDQwMyAxMTciIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzdhNTUzMCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPC9zdmc+Cg==",MW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjEwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8cmVjdCB3aWR0aD0iNDAwIiBoZWlnaHQ9IjIxMCIgZmlsbD0iI2ZmZmZmZiIvPgogIDx0ZXh0IHg9IjIwMCIgeT0iMjQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtZmFtaWx5PSJ1aS1tb25vc3BhY2UsIE1lbmxvLCBDb25zb2xhcywgbW9ub3NwYWNlIiBmb250LXNpemU9IjE2Ij5pbnQgYWx0ZXIgPSAxNDwvdGV4dD4KICA8cGF0aCBkPSJNMTMwIDcwIEwxNzAgNTAgTDMwMCA1MCBMMjYwIDcwIFoiIGZpbGw9IiNjOThhM2MiIHN0cm9rZT0iIzhhNWExZiIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHJlY3QgeD0iMTgwIiB5PSIzNCIgd2lkdGg9IjQ0IiBoZWlnaHQ9IjUwIiByeD0iMyIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjNmU2ZTczIiBzdHJva2Utd2lkdGg9IjEuNSIvPgogIDx0ZXh0IHg9IjIwMiIgeT0iNjAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMjAiIGZvbnQtd2VpZ2h0PSI3MDAiPjE0PC90ZXh0PgogIDxyZWN0IHg9IjEzMCIgeT0iNzAiIHdpZHRoPSIxMzAiIGhlaWdodD0iMTAwIiBmaWxsPSIjZTliODcyIiBzdHJva2U9IiM4YTVhMWYiIHN0cm9rZS13aWR0aD0iMiIvPgogIDxwYXRoIGQ9Ik0yNjAgNzAgTDMwMCA1MCBMMzAwIDE1MCBMMjYwIDE3MCBaIiBmaWxsPSIjZDQ5YTRjIiBzdHJva2U9IiM4YTVhMWYiIHN0cm9rZS13aWR0aD0iMiIvPgogIDxyZWN0IHg9IjE1MCIgeT0iMTAwIiB3aWR0aD0iOTAiIGhlaWdodD0iMzAiIHJ4PSI0IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiM4YTVhMWYiLz4KICA8dGV4dCB4PSIxOTUiIHk9IjEyMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+YWx0ZXI8L3RleHQ+CiAgPHJlY3QgeD0iMTM4IiB5PSIxNDIiIHdpZHRoPSIzNCIgaGVpZ2h0PSIyMCIgcng9IjEwIiBmaWxsPSIjMDA3YWZmIi8+CiAgPHRleHQgeD0iMTU1IiB5PSIxNTYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTIiIGZpbGw9IiNmZmZmZmYiIGZvbnQtd2VpZ2h0PSI2MDAiPmludDwvdGV4dD4KICA8ZyBzdHJva2U9IiM2ZTZlNzMiPgogICAgPGxpbmUgeDE9IjMxMCIgeTE9IjQ4IiB4Mj0iMjI2IiB5Mj0iNTIiLz4KICAgIDxsaW5lIHgxPSIzMTAiIHkxPSIxMTUiIHgyPSIyNDIiIHkyPSIxMTUiLz4KICAgIDxsaW5lIHgxPSI4MCIgeTE9IjE1MiIgeDI9IjEzNCIgeTI9IjE1MiIvPgogIDwvZz4KICA8dGV4dCB4PSIzMTYiIHk9IjUyIj5XZXJ0PC90ZXh0PgogIDx0ZXh0IHg9IjMxNiIgeT0iMTE5Ij5OYW1lPC90ZXh0PgogIDx0ZXh0IHg9IjgiIHk9IjE1NiI+RGF0ZW50eXA8L3RleHQ+CiAgPHRleHQgeD0iMjAwIiB5PSIxOTgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiM2ZTZlNzMiPsOcYmVyIGRlbiBOYW1lbiBrb21tc3QgZHUgYW4gZGVuIFdlcnQuPC90ZXh0Pgo8L3N2Zz4K",ZW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjAwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMDA3YWZmIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMjAwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPGcgZm9udC1mYW1pbHk9InVpLW1vbm9zcGFjZSwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2UiIGZvbnQtc2l6ZT0iMjAiPgogICAgPHRleHQgeD0iNjAiIHk9IjExMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjcwMCI+cHVua3RlPC90ZXh0PgogICAgPHRleHQgeD0iMTI1IiB5PSIxMTAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMwMDdhZmYiIGZvbnQtd2VpZ2h0PSI3MDAiPj08L3RleHQ+CiAgICA8dGV4dCB4PSIyNjAiIHk9IjExMCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+cHVua3RlICsgNTwvdGV4dD4KICA8L2c+CiAgPHJlY3QgeD0iMTgwIiB5PSI4NiIgd2lkdGg9IjE2MCIgaGVpZ2h0PSIzNCIgcng9IjYiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzE1ODAzZCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjYwIiB5PSIxNDgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMxNTgwM2QiPuKRoCByZWNodHMgYXVzcmVjaG5lbjogMTAgKyA1ID0gMTU8L3RleHQ+CiAgPHBhdGggZD0iTTI1MCA4MiBDMjMwIDMwLCA5MCAzMCwgNjQgODQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwN2FmZiIgc3Ryb2tlLXdpZHRoPSIyLjUiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICA8dGV4dCB4PSIxNjAiIHk9IjM2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjMDA3YWZmIj7ikaEgRXJnZWJuaXMgbGlua3Mgc3BlaWNoZXJuPC90ZXh0PgogIDxyZWN0IHg9IjIwIiB5PSIxNjQiIHdpZHRoPSIzNjAiIGhlaWdodD0iMjYiIHJ4PSI2IiBmaWxsPSIjZjJmMmY3Ii8+CiAgPHRleHQgeD0iMjAwIiB5PSIxODIiIHRleHQtYW5jaG9yPSJtaWRkbGUiPnB1bmt0ZSB2b3JoZXI6IDx0c3BhbiBmb250LXdlaWdodD0iNzAwIj4xMDwvdHNwYW4+ICAg4oaSICAgcHVua3RlIG5hY2hoZXI6IDx0c3BhbiBmb250LXdlaWdodD0iNzAwIj4xNTwvdHNwYW4+PC90ZXh0Pgo8L3N2Zz4K",LW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjYwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMjYwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPGcgc3Ryb2tlPSIjNmU2ZTczIiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9Im5vbmUiPgogICAgPHBhdGggZD0iTTQwIDExMCBMNDggMTgwIEwxMDIgMTgwIEwxMTAgMTEwIi8+CiAgICA8cGF0aCBkPSJNMTY1IDExMCBMMTczIDE4MCBMMjI3IDE4MCBMMjM1IDExMCIvPgogICAgPHBhdGggZD0iTTI5MCAxMTAgTDI5OCAxODAgTDM1MiAxODAgTDM2MCAxMTAiLz4KICA8L2c+CiAgPHBhdGggZD0iTTQ0IDEzNSBMNDggMTgwIEwxMDIgMTgwIEwxMDYgMTM1IFoiIGZpbGw9IiNmZGJhNzQiLz4KICA8cGF0aCBkPSJNMjk0IDEzNSBMMjk4IDE4MCBMMzUyIDE4MCBMMzU2IDEzNSBaIiBmaWxsPSIjOTNjNWZkIi8+CiAgPHRleHQgeD0iNzUiIHk9IjIwMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+bGlua3M8L3RleHQ+CiAgPHRleHQgeD0iNzUiIHk9IjIxNyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzZlNmU3MyI+U2FmdDwvdGV4dD4KICA8dGV4dCB4PSIyMDAiIHk9IjIwMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+aGlsZjwvdGV4dD4KICA8dGV4dCB4PSIyMDAiIHk9IjIxNyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzZlNmU3MyI+bGVlcjwvdGV4dD4KICA8dGV4dCB4PSIzMjUiIHk9IjIwMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+cmVjaHRzPC90ZXh0PgogIDx0ZXh0IHg9IjMyNSIgeT0iMjE3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj5XYXNzZXI8L3RleHQ+CiAgPGcgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNhKSI+CiAgICA8cGF0aCBkPSJNODggMTA0IEMxMTAgNzAsIDE2MCA3MCwgMTg2IDEwNCIvPgogICAgPHBhdGggZD0iTTMxOCAxMDQgQzI3MCAxNSwgMTMwIDE1LCA4MiAxMDQiLz4KICAgIDxwYXRoIGQ9Ik0yMTQgMTA0IEMyNDAgNzAsIDI5MCA3MCwgMzEyIDEwNCIvPgogIDwvZz4KICA8ZyBmb250LXdlaWdodD0iNzAwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj4KICAgIDxjaXJjbGUgY3g9IjEzNyIgY3k9IjgwIiByPSIxMSIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMWMxYzFlIi8+PHRleHQgeD0iMTM3IiB5PSI4NSI+MTwvdGV4dD4KICAgIDxjaXJjbGUgY3g9IjIwMCIgY3k9IjM4IiByPSIxMSIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMWMxYzFlIi8+PHRleHQgeD0iMjAwIiB5PSI0MyI+MjwvdGV4dD4KICAgIDxjaXJjbGUgY3g9IjI2MyIgY3k9IjgwIiByPSIxMSIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMWMxYzFlIi8+PHRleHQgeD0iMjYzIiB5PSI4NSI+MzwvdGV4dD4KICA8L2c+CiAgPGcgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1mYW1pbHk9InVpLW1vbm9zcGFjZSwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2UiIGZvbnQtc2l6ZT0iMTIiPgogICAgPHRleHQgeD0iNzAiIHk9IjI0NyI+MTogaGlsZiA9IGxpbmtzPC90ZXh0PgogICAgPHRleHQgeD0iMjAwIiB5PSIyNDciPjI6IGxpbmtzID0gcmVjaHRzPC90ZXh0PgogICAgPHRleHQgeD0iMzMwIiB5PSIyNDciPjM6IHJlY2h0cyA9IGhpbGY8L3RleHQ+CiAgPC9nPgo8L3N2Zz4K",WW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDAgMzAwIj4KPHJlY3Qgd2lkdGg9IjQ0MCIgaGVpZ2h0PSIzMDAiIGZpbGw9IiNmZmZmZmYiLz4KPGcgdHJhbnNmb3JtPSJyb3RhdGUoLTMgMjAwIDE1MCkiPgo8cmVjdCB4PSI0NCIgeT0iMjQiIHdpZHRoPSIyOTAiIGhlaWdodD0iMjU2IiBmaWxsPSIjMDAwIiBvcGFjaXR5PSIwLjEwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1IDYpIi8+CjxyZWN0IHg9IjQ0IiB5PSIyNCIgd2lkdGg9IjI5MCIgaGVpZ2h0PSIyNTYiIGZpbGw9IiNmZmZkZjYiIHN0cm9rZT0iI2M5YzJhZCIgc3Ryb2tlLXdpZHRoPSIxLjIiLz4KPGxpbmUgeDE9IjQ0IiB5MT0iNTgiIHgyPSIzMzQiIHkyPSI1OCIgc3Ryb2tlPSIjYmNkNGVlIiBzdHJva2Utd2lkdGg9IjEiLz4KPGxpbmUgeDE9IjQ0IiB5MT0iODAiIHgyPSIzMzQiIHkyPSI4MCIgc3Ryb2tlPSIjYmNkNGVlIiBzdHJva2Utd2lkdGg9IjEiLz4KPGxpbmUgeDE9IjQ0IiB5MT0iMTAyIiB4Mj0iMzM0IiB5Mj0iMTAyIiBzdHJva2U9IiNiY2Q0ZWUiIHN0cm9rZS13aWR0aD0iMSIvPgo8bGluZSB4MT0iNDQiIHkxPSIxMjQiIHgyPSIzMzQiIHkyPSIxMjQiIHN0cm9rZT0iI2JjZDRlZSIgc3Ryb2tlLXdpZHRoPSIxIi8+CjxsaW5lIHgxPSI0NCIgeTE9IjE0NiIgeDI9IjMzNCIgeTI9IjE0NiIgc3Ryb2tlPSIjYmNkNGVlIiBzdHJva2Utd2lkdGg9IjEiLz4KPGxpbmUgeDE9IjQ0IiB5MT0iMTY4IiB4Mj0iMzM0IiB5Mj0iMTY4IiBzdHJva2U9IiNiY2Q0ZWUiIHN0cm9rZS13aWR0aD0iMSIvPgo8bGluZSB4MT0iNDQiIHkxPSIxOTAiIHgyPSIzMzQiIHkyPSIxOTAiIHN0cm9rZT0iI2JjZDRlZSIgc3Ryb2tlLXdpZHRoPSIxIi8+CjxsaW5lIHgxPSI0NCIgeTE9IjIxMiIgeDI9IjMzNCIgeTI9IjIxMiIgc3Ryb2tlPSIjYmNkNGVlIiBzdHJva2Utd2lkdGg9IjEiLz4KPGxpbmUgeDE9IjQ0IiB5MT0iMjM0IiB4Mj0iMzM0IiB5Mj0iMjM0IiBzdHJva2U9IiNiY2Q0ZWUiIHN0cm9rZS13aWR0aD0iMSIvPgo8bGluZSB4MT0iNDQiIHkxPSIyNTYiIHgyPSIzMzQiIHkyPSIyNTYiIHN0cm9rZT0iI2JjZDRlZSIgc3Ryb2tlLXdpZHRoPSIxIi8+CjxsaW5lIHgxPSI3OCIgeTE9IjI0IiB4Mj0iNzgiIHkyPSIyODAiIHN0cm9rZT0iI2U4YTBhMCIgc3Ryb2tlLXdpZHRoPSIxLjIiLz4KPGcgZm9udC1mYW1pbHk9IidTZWdvZSBQcmludCcsICdCcmFkbGV5IEhhbmQnLCAnQ2hhbGtib2FyZCBTRScsICdDb21pYyBTYW5zIE1TJywgY3Vyc2l2ZSIgZmlsbD0iIzFmM2E4YSIgdGV4dC1hbmNob3I9Im1pZGRsZSI+Cjx0ZXh0IHg9IjEzMCIgeT0iNzUiIGZvbnQtc2l6ZT0iMTkiIGZvbnQtd2VpZ2h0PSJib2xkIj5hPC90ZXh0Pgo8dGV4dCB4PSIxOTUiIHk9Ijc1IiBmb250LXNpemU9IjE5IiBmb250LXdlaWdodD0iYm9sZCI+YjwvdGV4dD4KPHRleHQgeD0iMjYyIiB5PSI3NSIgZm9udC1zaXplPSIxOSIgZm9udC13ZWlnaHQ9ImJvbGQiPmhpbGY8L3RleHQ+Cjx0ZXh0IHg9IjEzMCIgeT0iOTciIGZvbnQtc2l6ZT0iMTgiPjM8L3RleHQ+Cjx0ZXh0IHg9IjE5NSIgeT0iOTciIGZvbnQtc2l6ZT0iMTgiPuKAkzwvdGV4dD4KPHRleHQgeD0iMjYyIiB5PSI5NyIgZm9udC1zaXplPSIxOCI+4oCTPC90ZXh0Pgo8dGV4dCB4PSIxMzAiIHk9IjExOSIgZm9udC1zaXplPSIxOCI+MzwvdGV4dD4KPHRleHQgeD0iMTk1IiB5PSIxMTkiIGZvbnQtc2l6ZT0iMTgiPjU8L3RleHQ+Cjx0ZXh0IHg9IjI2MiIgeT0iMTE5IiBmb250LXNpemU9IjE4Ij7igJM8L3RleHQ+Cjx0ZXh0IHg9IjEzMCIgeT0iMTQxIiBmb250LXNpemU9IjE4Ij4zPC90ZXh0Pgo8dGV4dCB4PSIxOTUiIHk9IjE0MSIgZm9udC1zaXplPSIxOCI+NTwvdGV4dD4KPHRleHQgeD0iMjYyIiB5PSIxNDEiIGZvbnQtc2l6ZT0iMTgiPjM8L3RleHQ+Cjx0ZXh0IHg9IjEzMCIgeT0iMTYzIiBmb250LXNpemU9IjE4Ij41PC90ZXh0Pgo8dGV4dCB4PSIxOTUiIHk9IjE2MyIgZm9udC1zaXplPSIxOCI+NTwvdGV4dD4KPHRleHQgeD0iMjYyIiB5PSIxNjMiIGZvbnQtc2l6ZT0iMTgiPjM8L3RleHQ+Cjx0ZXh0IHg9IjEzMCIgeT0iMTg1IiBmb250LXNpemU9IjE4Ij41PC90ZXh0Pgo8dGV4dCB4PSIxOTUiIHk9IjE4NSIgZm9udC1zaXplPSIxOCI+MzwvdGV4dD4KPHRleHQgeD0iMjYyIiB5PSIxODUiIGZvbnQtc2l6ZT0iMTgiPjM8L3RleHQ+CjwvZz4KPGcgc3Ryb2tlPSIjMWYzYThhIiBzdHJva2Utd2lkdGg9IjEuNiIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIj4KPHBhdGggZD0iTTEwMCA4MyBRMTkwIDgxIDMwMCA4NCIvPgo8cGF0aCBkPSJNMTYyIDU2IFExNjAgMTUwIDE2MyAxOTQiLz4KPHBhdGggZD0iTTIyOCA1NiBRMjMwIDE1MCAyMjcgMTk0Ii8+CjwvZz4KPC9nPgo8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMDAgMjMyKSByb3RhdGUoLTM4KSI+CjxyZWN0IHg9IjAiIHk9Ii05IiB3aWR0aD0iMTIwIiBoZWlnaHQ9IjE4IiBmaWxsPSIjZjVjMDAwIiBzdHJva2U9IiM4YTZkMDAiIHN0cm9rZS13aWR0aD0iMS4yIi8+CjxsaW5lIHgxPSIwIiB5MT0iLTMiIHgyPSIxMjAiIHkyPSItMyIgc3Ryb2tlPSIjZDlhODAwIiBzdHJva2Utd2lkdGg9IjEiLz4KPGxpbmUgeDE9IjAiIHkxPSIzIiB4Mj0iMTIwIiB5Mj0iMyIgc3Ryb2tlPSIjZDlhODAwIiBzdHJva2Utd2lkdGg9IjEiLz4KPHJlY3QgeD0iMTIwIiB5PSItOSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE4IiBmaWxsPSIjYjhiOGI4IiBzdHJva2U9IiM3NzciIHN0cm9rZS13aWR0aD0iMS4yIi8+CjxyZWN0IHg9IjEzMiIgeT0iLTkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxOCIgcng9IjUiIGZpbGw9IiNmMDhhOWEiIHN0cm9rZT0iI2EyNGE1OCIgc3Ryb2tlLXdpZHRoPSIxLjIiLz4KPHBhdGggZD0iTTAgLTkgTC0yNiAwIEwwIDkgWiIgZmlsbD0iI2U5YzlhMCIgc3Ryb2tlPSIjOGE2ZDRhIiBzdHJva2Utd2lkdGg9IjEuMiIvPgo8cGF0aCBkPSJNLTE3IC0zIEwtMjYgMCBMLTE3IDMgWiIgZmlsbD0iIzMzMyIvPgo8L2c+Cjwvc3ZnPgo=",EW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDAgMzAwIj4KPHJlY3Qgd2lkdGg9IjQ0MCIgaGVpZ2h0PSIzMDAiIGZpbGw9IiNmZmZmZmYiLz4KPGcgdHJhbnNmb3JtPSJyb3RhdGUoLTMgMjAwIDE1MCkiPgo8cmVjdCB4PSI0NCIgeT0iMjQiIHdpZHRoPSIyOTAiIGhlaWdodD0iMjU2IiBmaWxsPSIjMDAwIiBvcGFjaXR5PSIwLjEwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1IDYpIi8+CjxyZWN0IHg9IjQ0IiB5PSIyNCIgd2lkdGg9IjI5MCIgaGVpZ2h0PSIyNTYiIGZpbGw9IiNmZmZkZjYiIHN0cm9rZT0iI2M5YzJhZCIgc3Ryb2tlLXdpZHRoPSIxLjIiLz4KPGxpbmUgeDE9IjQ0IiB5MT0iNTgiIHgyPSIzMzQiIHkyPSI1OCIgc3Ryb2tlPSIjYmNkNGVlIiBzdHJva2Utd2lkdGg9IjEiLz4KPGxpbmUgeDE9IjQ0IiB5MT0iODAiIHgyPSIzMzQiIHkyPSI4MCIgc3Ryb2tlPSIjYmNkNGVlIiBzdHJva2Utd2lkdGg9IjEiLz4KPGxpbmUgeDE9IjQ0IiB5MT0iMTAyIiB4Mj0iMzM0IiB5Mj0iMTAyIiBzdHJva2U9IiNiY2Q0ZWUiIHN0cm9rZS13aWR0aD0iMSIvPgo8bGluZSB4MT0iNDQiIHkxPSIxMjQiIHgyPSIzMzQiIHkyPSIxMjQiIHN0cm9rZT0iI2JjZDRlZSIgc3Ryb2tlLXdpZHRoPSIxIi8+CjxsaW5lIHgxPSI0NCIgeTE9IjE0NiIgeDI9IjMzNCIgeTI9IjE0NiIgc3Ryb2tlPSIjYmNkNGVlIiBzdHJva2Utd2lkdGg9IjEiLz4KPGxpbmUgeDE9IjQ0IiB5MT0iMTY4IiB4Mj0iMzM0IiB5Mj0iMTY4IiBzdHJva2U9IiNiY2Q0ZWUiIHN0cm9rZS13aWR0aD0iMSIvPgo8bGluZSB4MT0iNDQiIHkxPSIxOTAiIHgyPSIzMzQiIHkyPSIxOTAiIHN0cm9rZT0iI2JjZDRlZSIgc3Ryb2tlLXdpZHRoPSIxIi8+CjxsaW5lIHgxPSI0NCIgeTE9IjIxMiIgeDI9IjMzNCIgeTI9IjIxMiIgc3Ryb2tlPSIjYmNkNGVlIiBzdHJva2Utd2lkdGg9IjEiLz4KPGxpbmUgeDE9IjQ0IiB5MT0iMjM0IiB4Mj0iMzM0IiB5Mj0iMjM0IiBzdHJva2U9IiNiY2Q0ZWUiIHN0cm9rZS13aWR0aD0iMSIvPgo8bGluZSB4MT0iNDQiIHkxPSIyNTYiIHgyPSIzMzQiIHkyPSIyNTYiIHN0cm9rZT0iI2JjZDRlZSIgc3Ryb2tlLXdpZHRoPSIxIi8+CjxsaW5lIHgxPSI3OCIgeTE9IjI0IiB4Mj0iNzgiIHkyPSIyODAiIHN0cm9rZT0iI2U4YTBhMCIgc3Ryb2tlLXdpZHRoPSIxLjIiLz4KPGcgZm9udC1mYW1pbHk9IidTZWdvZSBQcmludCcsICdCcmFkbGV5IEhhbmQnLCAnQ2hhbGtib2FyZCBTRScsICdDb21pYyBTYW5zIE1TJywgY3Vyc2l2ZSIgZmlsbD0iIzFmM2E4YSIgdGV4dC1hbmNob3I9Im1pZGRsZSI+Cjx0ZXh0IHg9IjEzMCIgeT0iNzUiIGZvbnQtc2l6ZT0iMTkiIGZvbnQtd2VpZ2h0PSJib2xkIj5hPC90ZXh0Pgo8dGV4dCB4PSIxOTUiIHk9Ijc1IiBmb250LXNpemU9IjE5IiBmb250LXdlaWdodD0iYm9sZCI+YjwvdGV4dD4KPHRleHQgeD0iMjYyIiB5PSI3NSIgZm9udC1zaXplPSIxOSIgZm9udC13ZWlnaHQ9ImJvbGQiPnRlbXA8L3RleHQ+Cjx0ZXh0IHg9IjEzMCIgeT0iOTciIGZvbnQtc2l6ZT0iMTgiPjM8L3RleHQ+Cjx0ZXh0IHg9IjE5NSIgeT0iOTciIGZvbnQtc2l6ZT0iMTgiPuKAkzwvdGV4dD4KPHRleHQgeD0iMjYyIiB5PSI5NyIgZm9udC1zaXplPSIxOCI+4oCTPC90ZXh0Pgo8dGV4dCB4PSIxMzAiIHk9IjExOSIgZm9udC1zaXplPSIxOCI+MzwvdGV4dD4KPHRleHQgeD0iMTk1IiB5PSIxMTkiIGZvbnQtc2l6ZT0iMTgiPjU8L3RleHQ+Cjx0ZXh0IHg9IjI2MiIgeT0iMTE5IiBmb250LXNpemU9IjE4Ij7igJM8L3RleHQ+Cjx0ZXh0IHg9IjEzMCIgeT0iMTQxIiBmb250LXNpemU9IjE4Ij4zPC90ZXh0Pgo8dGV4dCB4PSIxOTUiIHk9IjE0MSIgZm9udC1zaXplPSIxOCI+NTwvdGV4dD4KPHRleHQgeD0iMjYyIiB5PSIxNDEiIGZvbnQtc2l6ZT0iMTgiPjM8L3RleHQ+Cjx0ZXh0IHg9IjEzMCIgeT0iMTYzIiBmb250LXNpemU9IjE4Ij41PC90ZXh0Pgo8dGV4dCB4PSIxOTUiIHk9IjE2MyIgZm9udC1zaXplPSIxOCI+NTwvdGV4dD4KPHRleHQgeD0iMjYyIiB5PSIxNjMiIGZvbnQtc2l6ZT0iMTgiPjM8L3RleHQ+Cjx0ZXh0IHg9IjEzMCIgeT0iMTg1IiBmb250LXNpemU9IjE4Ij41PC90ZXh0Pgo8dGV4dCB4PSIxOTUiIHk9IjE4NSIgZm9udC1zaXplPSIxOCI+MzwvdGV4dD4KPHRleHQgeD0iMjYyIiB5PSIxODUiIGZvbnQtc2l6ZT0iMTgiPjM8L3RleHQ+CjwvZz4KPGcgc3Ryb2tlPSIjMWYzYThhIiBzdHJva2Utd2lkdGg9IjEuNiIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIj4KPHBhdGggZD0iTTEwMCA4MyBRMTkwIDgxIDMwMCA4NCIvPgo8cGF0aCBkPSJNMTYyIDU2IFExNjAgMTUwIDE2MyAxOTQiLz4KPHBhdGggZD0iTTIyOCA1NiBRMjMwIDE1MCAyMjcgMTk0Ii8+CjwvZz4KPC9nPgo8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMDAgMjMyKSByb3RhdGUoLTM4KSI+CjxyZWN0IHg9IjAiIHk9Ii05IiB3aWR0aD0iMTIwIiBoZWlnaHQ9IjE4IiBmaWxsPSIjZjVjMDAwIiBzdHJva2U9IiM4YTZkMDAiIHN0cm9rZS13aWR0aD0iMS4yIi8+CjxsaW5lIHgxPSIwIiB5MT0iLTMiIHgyPSIxMjAiIHkyPSItMyIgc3Ryb2tlPSIjZDlhODAwIiBzdHJva2Utd2lkdGg9IjEiLz4KPGxpbmUgeDE9IjAiIHkxPSIzIiB4Mj0iMTIwIiB5Mj0iMyIgc3Ryb2tlPSIjZDlhODAwIiBzdHJva2Utd2lkdGg9IjEiLz4KPHJlY3QgeD0iMTIwIiB5PSItOSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE4IiBmaWxsPSIjYjhiOGI4IiBzdHJva2U9IiM3NzciIHN0cm9rZS13aWR0aD0iMS4yIi8+CjxyZWN0IHg9IjEzMiIgeT0iLTkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxOCIgcng9IjUiIGZpbGw9IiNmMDhhOWEiIHN0cm9rZT0iI2EyNGE1OCIgc3Ryb2tlLXdpZHRoPSIxLjIiLz4KPHBhdGggZD0iTTAgLTkgTC0yNiAwIEwwIDkgWiIgZmlsbD0iI2U5YzlhMCIgc3Ryb2tlPSIjOGE2ZDRhIiBzdHJva2Utd2lkdGg9IjEuMiIvPgo8cGF0aCBkPSJNLTE3IC0zIEwtMjYgMCBMLTE3IDMgWiIgZmlsbD0iIzMzMyIvPgo8L2c+Cjwvc3ZnPgo=",NW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDAgMzAwIj4KPHJlY3Qgd2lkdGg9IjQ0MCIgaGVpZ2h0PSIzMDAiIGZpbGw9IiNmZmZmZmYiLz4KPGcgdHJhbnNmb3JtPSJyb3RhdGUoLTMgMjAwIDE1MCkiPgo8cmVjdCB4PSI0NCIgeT0iMjQiIHdpZHRoPSIyOTAiIGhlaWdodD0iMjU2IiBmaWxsPSIjMDAwIiBvcGFjaXR5PSIwLjEwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1IDYpIi8+CjxyZWN0IHg9IjQ0IiB5PSIyNCIgd2lkdGg9IjI5MCIgaGVpZ2h0PSIyNTYiIGZpbGw9IiNmZmZkZjYiIHN0cm9rZT0iI2M5YzJhZCIgc3Ryb2tlLXdpZHRoPSIxLjIiLz4KPGxpbmUgeDE9IjQ0IiB5MT0iNTgiIHgyPSIzMzQiIHkyPSI1OCIgc3Ryb2tlPSIjYmNkNGVlIiBzdHJva2Utd2lkdGg9IjEiLz4KPGxpbmUgeDE9IjQ0IiB5MT0iODAiIHgyPSIzMzQiIHkyPSI4MCIgc3Ryb2tlPSIjYmNkNGVlIiBzdHJva2Utd2lkdGg9IjEiLz4KPGxpbmUgeDE9IjQ0IiB5MT0iMTAyIiB4Mj0iMzM0IiB5Mj0iMTAyIiBzdHJva2U9IiNiY2Q0ZWUiIHN0cm9rZS13aWR0aD0iMSIvPgo8bGluZSB4MT0iNDQiIHkxPSIxMjQiIHgyPSIzMzQiIHkyPSIxMjQiIHN0cm9rZT0iI2JjZDRlZSIgc3Ryb2tlLXdpZHRoPSIxIi8+CjxsaW5lIHgxPSI0NCIgeTE9IjE0NiIgeDI9IjMzNCIgeTI9IjE0NiIgc3Ryb2tlPSIjYmNkNGVlIiBzdHJva2Utd2lkdGg9IjEiLz4KPGxpbmUgeDE9IjQ0IiB5MT0iMTY4IiB4Mj0iMzM0IiB5Mj0iMTY4IiBzdHJva2U9IiNiY2Q0ZWUiIHN0cm9rZS13aWR0aD0iMSIvPgo8bGluZSB4MT0iNDQiIHkxPSIxOTAiIHgyPSIzMzQiIHkyPSIxOTAiIHN0cm9rZT0iI2JjZDRlZSIgc3Ryb2tlLXdpZHRoPSIxIi8+CjxsaW5lIHgxPSI0NCIgeTE9IjIxMiIgeDI9IjMzNCIgeTI9IjIxMiIgc3Ryb2tlPSIjYmNkNGVlIiBzdHJva2Utd2lkdGg9IjEiLz4KPGxpbmUgeDE9IjQ0IiB5MT0iMjM0IiB4Mj0iMzM0IiB5Mj0iMjM0IiBzdHJva2U9IiNiY2Q0ZWUiIHN0cm9rZS13aWR0aD0iMSIvPgo8bGluZSB4MT0iNDQiIHkxPSIyNTYiIHgyPSIzMzQiIHkyPSIyNTYiIHN0cm9rZT0iI2JjZDRlZSIgc3Ryb2tlLXdpZHRoPSIxIi8+CjxsaW5lIHgxPSI3OCIgeTE9IjI0IiB4Mj0iNzgiIHkyPSIyODAiIHN0cm9rZT0iI2U4YTBhMCIgc3Ryb2tlLXdpZHRoPSIxLjIiLz4KPGcgZm9udC1mYW1pbHk9IidTZWdvZSBQcmludCcsICdCcmFkbGV5IEhhbmQnLCAnQ2hhbGtib2FyZCBTRScsICdDb21pYyBTYW5zIE1TJywgY3Vyc2l2ZSIgZmlsbD0iIzFmM2E4YSIgdGV4dC1hbmNob3I9Im1pZGRsZSI+Cjx0ZXh0IHg9IjEzMCIgeT0iNzUiIGZvbnQtc2l6ZT0iMTkiIGZvbnQtd2VpZ2h0PSJib2xkIj5hPC90ZXh0Pgo8dGV4dCB4PSIxOTUiIHk9Ijc1IiBmb250LXNpemU9IjE5IiBmb250LXdlaWdodD0iYm9sZCI+YjwvdGV4dD4KPHRleHQgeD0iMjYyIiB5PSI3NSIgZm9udC1zaXplPSIxOSIgZm9udC13ZWlnaHQ9ImJvbGQiPmF1eDwvdGV4dD4KPHRleHQgeD0iMTMwIiB5PSI5NyIgZm9udC1zaXplPSIxOCI+MzwvdGV4dD4KPHRleHQgeD0iMTk1IiB5PSI5NyIgZm9udC1zaXplPSIxOCI+4oCTPC90ZXh0Pgo8dGV4dCB4PSIyNjIiIHk9Ijk3IiBmb250LXNpemU9IjE4Ij7igJM8L3RleHQ+Cjx0ZXh0IHg9IjEzMCIgeT0iMTE5IiBmb250LXNpemU9IjE4Ij4zPC90ZXh0Pgo8dGV4dCB4PSIxOTUiIHk9IjExOSIgZm9udC1zaXplPSIxOCI+NTwvdGV4dD4KPHRleHQgeD0iMjYyIiB5PSIxMTkiIGZvbnQtc2l6ZT0iMTgiPuKAkzwvdGV4dD4KPHRleHQgeD0iMTMwIiB5PSIxNDEiIGZvbnQtc2l6ZT0iMTgiPjM8L3RleHQ+Cjx0ZXh0IHg9IjE5NSIgeT0iMTQxIiBmb250LXNpemU9IjE4Ij41PC90ZXh0Pgo8dGV4dCB4PSIyNjIiIHk9IjE0MSIgZm9udC1zaXplPSIxOCI+MzwvdGV4dD4KPHRleHQgeD0iMTMwIiB5PSIxNjMiIGZvbnQtc2l6ZT0iMTgiPjU8L3RleHQ+Cjx0ZXh0IHg9IjE5NSIgeT0iMTYzIiBmb250LXNpemU9IjE4Ij41PC90ZXh0Pgo8dGV4dCB4PSIyNjIiIHk9IjE2MyIgZm9udC1zaXplPSIxOCI+MzwvdGV4dD4KPHRleHQgeD0iMTMwIiB5PSIxODUiIGZvbnQtc2l6ZT0iMTgiPjU8L3RleHQ+Cjx0ZXh0IHg9IjE5NSIgeT0iMTg1IiBmb250LXNpemU9IjE4Ij4zPC90ZXh0Pgo8dGV4dCB4PSIyNjIiIHk9IjE4NSIgZm9udC1zaXplPSIxOCI+MzwvdGV4dD4KPC9nPgo8ZyBzdHJva2U9IiMxZjNhOGEiIHN0cm9rZS13aWR0aD0iMS42IiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiPgo8cGF0aCBkPSJNMTAwIDgzIFExOTAgODEgMzAwIDg0Ii8+CjxwYXRoIGQ9Ik0xNjIgNTYgUTE2MCAxNTAgMTYzIDE5NCIvPgo8cGF0aCBkPSJNMjI4IDU2IFEyMzAgMTUwIDIyNyAxOTQiLz4KPC9nPgo8L2c+CjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMwMCAyMzIpIHJvdGF0ZSgtMzgpIj4KPHJlY3QgeD0iMCIgeT0iLTkiIHdpZHRoPSIxMjAiIGhlaWdodD0iMTgiIGZpbGw9IiNmNWMwMDAiIHN0cm9rZT0iIzhhNmQwMCIgc3Ryb2tlLXdpZHRoPSIxLjIiLz4KPGxpbmUgeDE9IjAiIHkxPSItMyIgeDI9IjEyMCIgeTI9Ii0zIiBzdHJva2U9IiNkOWE4MDAiIHN0cm9rZS13aWR0aD0iMSIvPgo8bGluZSB4MT0iMCIgeTE9IjMiIHgyPSIxMjAiIHkyPSIzIiBzdHJva2U9IiNkOWE4MDAiIHN0cm9rZS13aWR0aD0iMSIvPgo8cmVjdCB4PSIxMjAiIHk9Ii05IiB3aWR0aD0iMTIiIGhlaWdodD0iMTgiIGZpbGw9IiNiOGI4YjgiIHN0cm9rZT0iIzc3NyIgc3Ryb2tlLXdpZHRoPSIxLjIiLz4KPHJlY3QgeD0iMTMyIiB5PSItOSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE4IiByeD0iNSIgZmlsbD0iI2YwOGE5YSIgc3Ryb2tlPSIjYTI0YTU4IiBzdHJva2Utd2lkdGg9IjEuMiIvPgo8cGF0aCBkPSJNMCAtOSBMLTI2IDAgTDAgOSBaIiBmaWxsPSIjZTljOWEwIiBzdHJva2U9IiM4YTZkNGEiIHN0cm9rZS13aWR0aD0iMS4yIi8+CjxwYXRoIGQ9Ik0tMTcgLTMgTC0yNiAwIEwtMTcgMyBaIiBmaWxsPSIjMzMzIi8+CjwvZz4KPC9zdmc+Cg==",FW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMTUwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8cmVjdCB3aWR0aD0iNDAwIiBoZWlnaHQ9IjE1MCIgZmlsbD0iI2ZmZmZmZiIvPgogIDxyZWN0IHg9IjIwIiB5PSI1MCIgd2lkdGg9IjcwIiBoZWlnaHQ9IjI0IiBmaWxsPSIjZmVlMmUyIi8+PHJlY3QgeD0iMzEwIiB5PSI1MCIgd2lkdGg9IjcwIiBoZWlnaHQ9IjI0IiBmaWxsPSIjZmVlMmUyIi8+CiAgPHJlY3QgeD0iOTAiIHk9IjUwIiB3aWR0aD0iMjIwIiBoZWlnaHQ9IjI0IiBmaWxsPSIjZGNmY2U3Ii8+CiAgPGxpbmUgeDE9IjIwIiB5MT0iNzQiIHgyPSIzODAiIHkyPSI3NCIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8bGluZSB4MT0iNDYiIHkxPSI2OCIgeDI9IjQ2IiB5Mj0iODAiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIyIi8+PHRleHQgeD0iNDYiIHk9Ijk4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj4wPC90ZXh0PgogIDxsaW5lIHgxPSI5MCIgeTE9IjY4IiB4Mj0iOTAiIHkyPSI4MCIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz48dGV4dCB4PSI5MCIgeT0iOTgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPjE8L3RleHQ+CiAgPGxpbmUgeDE9IjEzNCIgeTE9IjY4IiB4Mj0iMTM0IiB5Mj0iODAiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIyIi8+PHRleHQgeD0iMTM0IiB5PSI5OCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+MjwvdGV4dD4KICA8bGluZSB4MT0iMTc4IiB5MT0iNjgiIHgyPSIxNzgiIHkyPSI4MCIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz48dGV4dCB4PSIxNzgiIHk9Ijk4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj4zPC90ZXh0PgogIDxsaW5lIHgxPSIyMjIiIHkxPSI2OCIgeDI9IjIyMiIgeTI9IjgwIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMiIvPjx0ZXh0IHg9IjIyMiIgeT0iOTgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPjQ8L3RleHQ+CiAgPGxpbmUgeDE9IjI2NiIgeTE9IjY4IiB4Mj0iMjY2IiB5Mj0iODAiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIyIi8+PHRleHQgeD0iMjY2IiB5PSI5OCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+NTwvdGV4dD4KICA8bGluZSB4MT0iMzEwIiB5MT0iNjgiIHgyPSIzMTAiIHkyPSI4MCIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz48dGV4dCB4PSIzMTAiIHk9Ijk4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj42PC90ZXh0PgogIDxsaW5lIHgxPSIzNTQiIHkxPSI2OCIgeDI9IjM1NCIgeTI9IjgwIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMiIvPjx0ZXh0IHg9IjM1NCIgeT0iOTgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPjc8L3RleHQ+CiAgPGNpcmNsZSBjeD0iOTAiIGN5PSI3NCIgcj0iNiIgZmlsbD0iIzE1ODAzZCIvPjxjaXJjbGUgY3g9IjMxMCIgY3k9Ijc0IiByPSI2IiBmaWxsPSIjMTU4MDNkIi8+CiAgPHRleHQgeD0iMjAwIiB5PSI0MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzE1ODAzZCIgZm9udC13ZWlnaHQ9IjYwMCI+Z8O8bHRpZzwvdGV4dD4KICA8dGV4dCB4PSI0MCIgeT0iNDAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiNiOTFjMWMiIGZvbnQtd2VpZ2h0PSI2MDAiPnVuZ8O8bHRpZzwvdGV4dD48dGV4dCB4PSIzNjAiIHk9IjQwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjYjkxYzFjIiBmb250LXdlaWdodD0iNjAwIj51bmfDvGx0aWc8L3RleHQ+CiAgPGcgZm9udC1mYW1pbHk9InVpLW1vbm9zcGFjZSwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2UiIGZvbnQtc2l6ZT0iMTMiIHRleHQtYW5jaG9yPSJtaWRkbGUiPgogICAgPHRleHQgeD0iMjAwIiB5PSIxMjQiIGZpbGw9IiMxNTgwM2QiPm5vdGUgJmd0Oz0gMSAmYW1wOyZhbXA7IG5vdGUgJmx0Oz0gNjwvdGV4dD4KICAgIDx0ZXh0IHg9IjIwMCIgeT0iMTQyIiBmaWxsPSIjYjkxYzFjIj5ub3RlICZsdDsgMSB8fCBub3RlICZndDsgNjwvdGV4dD4KICA8L2c+Cjwvc3ZnPgo=",RW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDAgMTkwIiBmb250LWZhbWlseT0idWktbW9ub3NwYWNlLCBNZW5sbywgQ29uc29sYXMsIG1vbm9zcGFjZSIgZm9udC1zaXplPSIxNSIgZmlsbD0iIzFjMWMxZSI+CiAgPHJlY3Qgd2lkdGg9IjQ0MCIgaGVpZ2h0PSIxOTAiIGZpbGw9IiNmZmZmZmYiLz4KICA8cmVjdCB4PSIyMCIgeT0iMTQiIHdpZHRoPSI4MCIgaGVpZ2h0PSIzMiIgZmlsbD0iI2YyZjJmNyIgc3Ryb2tlPSIjOGU4ZTkzIi8+PHRleHQgeD0iNjAuMCIgeT0iMzUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSI3MDAiPmE8L3RleHQ+CiAgPHJlY3QgeD0iMTAwIiB5PSIxNCIgd2lkdGg9IjgwIiBoZWlnaHQ9IjMyIiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiM4ZThlOTMiLz48dGV4dCB4PSIxNDAuMCIgeT0iMzUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSI3MDAiPmI8L3RleHQ+CiAgPHJlY3QgeD0iMTgwIiB5PSIxNCIgd2lkdGg9IjgwIiBoZWlnaHQ9IjMyIiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiM4ZThlOTMiLz48dGV4dCB4PSIyMjAuMCIgeT0iMzUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSI3MDAiPmEgJmFtcDsmYW1wOyBiPC90ZXh0PgogIDxyZWN0IHg9IjI2MCIgeT0iMTQiIHdpZHRoPSI4MCIgaGVpZ2h0PSIzMiIgZmlsbD0iI2YyZjJmNyIgc3Ryb2tlPSIjOGU4ZTkzIi8+PHRleHQgeD0iMzAwLjAiIHk9IjM1IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iNzAwIj5hIHx8IGI8L3RleHQ+CiAgPHJlY3QgeD0iMzQwIiB5PSIxNCIgd2lkdGg9IjgwIiBoZWlnaHQ9IjMyIiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiM4ZThlOTMiLz48dGV4dCB4PSIzODAuMCIgeT0iMzUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSI3MDAiPiFhPC90ZXh0PgogIDxyZWN0IHg9IjIwIiB5PSI0NiIgd2lkdGg9IjgwIiBoZWlnaHQ9IjMyIiBmaWxsPSIjZGNmY2U3IiBzdHJva2U9IiM4ZThlOTMiLz48dGV4dCB4PSI2MC4wIiB5PSI2NyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzE1ODAzZCI+dHJ1ZTwvdGV4dD4KICA8cmVjdCB4PSIxMDAiIHk9IjQ2IiB3aWR0aD0iODAiIGhlaWdodD0iMzIiIGZpbGw9IiNkY2ZjZTciIHN0cm9rZT0iIzhlOGU5MyIvPjx0ZXh0IHg9IjE0MC4wIiB5PSI2NyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzE1ODAzZCI+dHJ1ZTwvdGV4dD4KICA8cmVjdCB4PSIxODAiIHk9IjQ2IiB3aWR0aD0iODAiIGhlaWdodD0iMzIiIGZpbGw9IiNkY2ZjZTciIHN0cm9rZT0iIzhlOGU5MyIvPjx0ZXh0IHg9IjIyMC4wIiB5PSI2NyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzE1ODAzZCI+dHJ1ZTwvdGV4dD4KICA8cmVjdCB4PSIyNjAiIHk9IjQ2IiB3aWR0aD0iODAiIGhlaWdodD0iMzIiIGZpbGw9IiNkY2ZjZTciIHN0cm9rZT0iIzhlOGU5MyIvPjx0ZXh0IHg9IjMwMC4wIiB5PSI2NyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzE1ODAzZCI+dHJ1ZTwvdGV4dD4KICA8cmVjdCB4PSIzNDAiIHk9IjQ2IiB3aWR0aD0iODAiIGhlaWdodD0iMzIiIGZpbGw9IiNmZWUyZTIiIHN0cm9rZT0iIzhlOGU5MyIvPjx0ZXh0IHg9IjM4MC4wIiB5PSI2NyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iI2I5MWMxYyI+ZmFsc2U8L3RleHQ+CiAgPHJlY3QgeD0iMjAiIHk9Ijc4IiB3aWR0aD0iODAiIGhlaWdodD0iMzIiIGZpbGw9IiNkY2ZjZTciIHN0cm9rZT0iIzhlOGU5MyIvPjx0ZXh0IHg9IjYwLjAiIHk9Ijk5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjMTU4MDNkIj50cnVlPC90ZXh0PgogIDxyZWN0IHg9IjEwMCIgeT0iNzgiIHdpZHRoPSI4MCIgaGVpZ2h0PSIzMiIgZmlsbD0iI2ZlZTJlMiIgc3Ryb2tlPSIjOGU4ZTkzIi8+PHRleHQgeD0iMTQwLjAiIHk9Ijk5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjYjkxYzFjIj5mYWxzZTwvdGV4dD4KICA8cmVjdCB4PSIxODAiIHk9Ijc4IiB3aWR0aD0iODAiIGhlaWdodD0iMzIiIGZpbGw9IiNmZWUyZTIiIHN0cm9rZT0iIzhlOGU5MyIvPjx0ZXh0IHg9IjIyMC4wIiB5PSI5OSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iI2I5MWMxYyI+ZmFsc2U8L3RleHQ+CiAgPHJlY3QgeD0iMjYwIiB5PSI3OCIgd2lkdGg9IjgwIiBoZWlnaHQ9IjMyIiBmaWxsPSIjZGNmY2U3IiBzdHJva2U9IiM4ZThlOTMiLz48dGV4dCB4PSIzMDAuMCIgeT0iOTkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMxNTgwM2QiPnRydWU8L3RleHQ+CiAgPHJlY3QgeD0iMzQwIiB5PSI3OCIgd2lkdGg9IjgwIiBoZWlnaHQ9IjMyIiBmaWxsPSIjZmVlMmUyIiBzdHJva2U9IiM4ZThlOTMiLz48dGV4dCB4PSIzODAuMCIgeT0iOTkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiNiOTFjMWMiPmZhbHNlPC90ZXh0PgogIDxyZWN0IHg9IjIwIiB5PSIxMTAiIHdpZHRoPSI4MCIgaGVpZ2h0PSIzMiIgZmlsbD0iI2ZlZTJlMiIgc3Ryb2tlPSIjOGU4ZTkzIi8+PHRleHQgeD0iNjAuMCIgeT0iMTMxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjYjkxYzFjIj5mYWxzZTwvdGV4dD4KICA8cmVjdCB4PSIxMDAiIHk9IjExMCIgd2lkdGg9IjgwIiBoZWlnaHQ9IjMyIiBmaWxsPSIjZGNmY2U3IiBzdHJva2U9IiM4ZThlOTMiLz48dGV4dCB4PSIxNDAuMCIgeT0iMTMxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjMTU4MDNkIj50cnVlPC90ZXh0PgogIDxyZWN0IHg9IjE4MCIgeT0iMTEwIiB3aWR0aD0iODAiIGhlaWdodD0iMzIiIGZpbGw9IiNmZWUyZTIiIHN0cm9rZT0iIzhlOGU5MyIvPjx0ZXh0IHg9IjIyMC4wIiB5PSIxMzEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiNiOTFjMWMiPmZhbHNlPC90ZXh0PgogIDxyZWN0IHg9IjI2MCIgeT0iMTEwIiB3aWR0aD0iODAiIGhlaWdodD0iMzIiIGZpbGw9IiNkY2ZjZTciIHN0cm9rZT0iIzhlOGU5MyIvPjx0ZXh0IHg9IjMwMC4wIiB5PSIxMzEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMxNTgwM2QiPnRydWU8L3RleHQ+CiAgPHJlY3QgeD0iMzQwIiB5PSIxMTAiIHdpZHRoPSI4MCIgaGVpZ2h0PSIzMiIgZmlsbD0iI2RjZmNlNyIgc3Ryb2tlPSIjOGU4ZTkzIi8+PHRleHQgeD0iMzgwLjAiIHk9IjEzMSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzE1ODAzZCI+dHJ1ZTwvdGV4dD4KICA8cmVjdCB4PSIyMCIgeT0iMTQyIiB3aWR0aD0iODAiIGhlaWdodD0iMzIiIGZpbGw9IiNmZWUyZTIiIHN0cm9rZT0iIzhlOGU5MyIvPjx0ZXh0IHg9IjYwLjAiIHk9IjE2MyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iI2I5MWMxYyI+ZmFsc2U8L3RleHQ+CiAgPHJlY3QgeD0iMTAwIiB5PSIxNDIiIHdpZHRoPSI4MCIgaGVpZ2h0PSIzMiIgZmlsbD0iI2ZlZTJlMiIgc3Ryb2tlPSIjOGU4ZTkzIi8+PHRleHQgeD0iMTQwLjAiIHk9IjE2MyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iI2I5MWMxYyI+ZmFsc2U8L3RleHQ+CiAgPHJlY3QgeD0iMTgwIiB5PSIxNDIiIHdpZHRoPSI4MCIgaGVpZ2h0PSIzMiIgZmlsbD0iI2ZlZTJlMiIgc3Ryb2tlPSIjOGU4ZTkzIi8+PHRleHQgeD0iMjIwLjAiIHk9IjE2MyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iI2I5MWMxYyI+ZmFsc2U8L3RleHQ+CiAgPHJlY3QgeD0iMjYwIiB5PSIxNDIiIHdpZHRoPSI4MCIgaGVpZ2h0PSIzMiIgZmlsbD0iI2ZlZTJlMiIgc3Ryb2tlPSIjOGU4ZTkzIi8+PHRleHQgeD0iMzAwLjAiIHk9IjE2MyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iI2I5MWMxYyI+ZmFsc2U8L3RleHQ+CiAgPHJlY3QgeD0iMzQwIiB5PSIxNDIiIHdpZHRoPSI4MCIgaGVpZ2h0PSIzMiIgZmlsbD0iI2RjZmNlNyIgc3Ryb2tlPSIjOGU4ZTkzIi8+PHRleHQgeD0iMzgwLjAiIHk9IjE2MyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzE1ODAzZCI+dHJ1ZTwvdGV4dD4KICA8bGluZSB4MT0iMTgwIiB5MT0iMTQiIHgyPSIxODAiIHkyPSIxNzQiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIzIi8+Cjwvc3ZnPgo=",JW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjMwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMjMwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHRleHQgeD0iMjAiIHk9IjI0IiBmb250LXdlaWdodD0iNjAwIj5BYmxhdWYgZGVyIFdoaWxlLVNjaGxlaWZlPC90ZXh0PgogIDxyZWN0IHg9IjEyMCIgeT0iNDQiIHdpZHRoPSIxNjAiIGhlaWdodD0iNDAiIHJ4PSIyMCIgZmlsbD0iI2ZlZjNjNyIgc3Ryb2tlPSIjYjQ1MzA5IiBzdHJva2Utd2lkdGg9IjIiLz4KICA8dGV4dCB4PSIyMDAiIHk9IjY5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj7ikaAgQmVkaW5ndW5nIHByw7xmZW48L3RleHQ+CiAgPHJlY3QgeD0iMTIwIiB5PSIxMjgiIHdpZHRoPSIxNjAiIGhlaWdodD0iNDAiIHJ4PSI2IiBmaWxsPSIjZGJlYWZlIiBzdHJva2U9IiMxZDRlZDgiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjIwMCIgeT0iMTUzIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj7ikaEgSW5oYWx0IGF1c2bDvGhyZW48L3RleHQ+CiAgPGcgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNhKSI+CiAgICA8bGluZSB4MT0iMjAwIiB5MT0iODQiIHgyPSIyMDAiIHkyPSIxMjYiLz4KICAgIDxwYXRoIGQ9Ik0xMjAgMTQ4IEM4MCAxNDgsIDgwIDY0LCAxMTggNjQiLz4KICAgIDxwYXRoIGQ9Ik0yODAgNjQgTDM0MCA2NCBMMzQwIDIwMCBMMjgyIDIwMCIvPgogIDwvZz4KICA8dGV4dCB4PSIyMDgiIHk9IjExMCIgZmlsbD0iIzE1ODAzZCIgZm9udC13ZWlnaHQ9IjYwMCI+dHJ1ZTwvdGV4dD4KICA8dGV4dCB4PSIzOCIgeT0iMTEwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj53aWVkZXI8L3RleHQ+CiAgPHRleHQgeD0iMzgiIHk9IjEyNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzZlNmU3MyI+bmFjaCBvYmVuPC90ZXh0PgogIDx0ZXh0IHg9IjM0OCIgeT0iMTM0IiBmaWxsPSIjYjkxYzFjIiBmb250LXdlaWdodD0iNjAwIj5mYWxzZTwvdGV4dD4KICA8dGV4dCB4PSIyNzYiIHk9IjIwNSIgdGV4dC1hbmNob3I9ImVuZCI+d2VpdGVyIHVudGVyIGRlciBTY2hsZWlmZTwvdGV4dD4KPC9zdmc+Cg==",GW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjMwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMjMwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHRleHQgeD0iMTAwIiB5PSIyMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+a29wZmdlc3RldWVydCAoV2hpbGUpPC90ZXh0PgogIDx0ZXh0IHg9IjMwMCIgeT0iMjIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSI2MDAiPmZ1w59nZXN0ZXVlcnQgKERvLXdoaWxlKTwvdGV4dD4KICA8bGluZSB4MT0iMjAwIiB5MT0iMTAiIHgyPSIyMDAiIHkyPSIyMjAiIHN0cm9rZT0iI2QxZDFkNiIvPgogIDxyZWN0IHg9IjM1IiB5PSI0NCIgd2lkdGg9IjEzMCIgaGVpZ2h0PSIzNiIgcng9IjE4IiBmaWxsPSIjZmVmM2M3IiBzdHJva2U9IiNiNDUzMDkiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjEwMCIgeT0iNjciIHRleHQtYW5jaG9yPSJtaWRkbGUiPuKRoCBCZWRpbmd1bmc8L3RleHQ+CiAgPHJlY3QgeD0iMzUiIHk9IjEyNCIgd2lkdGg9IjEzMCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNkYmVhZmUiIHN0cm9rZT0iIzFkNGVkOCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMTAwIiB5PSIxNDciIHRleHQtYW5jaG9yPSJtaWRkbGUiPuKRoSBJbmhhbHQ8L3RleHQ+CiAgPHJlY3QgeD0iMjM1IiB5PSI0NCIgd2lkdGg9IjEzMCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNkYmVhZmUiIHN0cm9rZT0iIzFkNGVkOCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMzAwIiB5PSI2NyIgdGV4dC1hbmNob3I9Im1pZGRsZSI+4pGgIEluaGFsdDwvdGV4dD4KICA8cmVjdCB4PSIyMzUiIHk9IjEyNCIgd2lkdGg9IjEzMCIgaGVpZ2h0PSIzNiIgcng9IjE4IiBmaWxsPSIjZmVmM2M3IiBzdHJva2U9IiNiNDUzMDkiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjMwMCIgeT0iMTQ3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj7ikaEgQmVkaW5ndW5nPC90ZXh0PgogIDxnIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIxLjYiIG1hcmtlci1lbmQ9InVybCgjYSkiPgogICAgPGxpbmUgeDE9IjEwMCIgeTE9IjgwIiB4Mj0iMTAwIiB5Mj0iMTIyIi8+CiAgICA8cGF0aCBkPSJNMzUgMTQyIEM4IDE0MiwgOCA2MiwgMzMgNjIiLz4KICAgIDxsaW5lIHgxPSIzMDAiIHkxPSI4MCIgeDI9IjMwMCIgeTI9IjEyMiIvPgogICAgPHBhdGggZD0iTTM2NSAxNDIgQzM5MiAxNDIsIDM5MiA2MiwgMzY3IDYyIi8+CiAgPC9nPgogIDx0ZXh0IHg9IjEwNiIgeT0iMTA2IiBmaWxsPSIjMTU4MDNkIiBmb250LXdlaWdodD0iNjAwIj50cnVlPC90ZXh0PgogIDx0ZXh0IHg9IjM4MCIgeT0iMTA2IiB0ZXh0LWFuY2hvcj0iZW5kIiBmaWxsPSIjMTU4MDNkIiBmb250LXdlaWdodD0iNjAwIj50cnVlPC90ZXh0PgogIDx0ZXh0IHg9IjEwMCIgeT0iMTkwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj5Jc3QgZGllIEJlZGluZ3VuZyBnbGVpY2ggZmFsc2UsPC90ZXh0PgogIDx0ZXh0IHg9IjEwMCIgeT0iMjA2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj5sw6R1ZnQgZGVyIEluaGFsdCA8dHNwYW4gZm9udC13ZWlnaHQ9IjcwMCIgZmlsbD0iIzFjMWMxZSI+bmllPC90c3Bhbj4uPC90ZXh0PgogIDx0ZXh0IHg9IjMwMCIgeT0iMTkwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj5EZXIgSW5oYWx0IGzDpHVmdCBpbW1lcjwvdGV4dD4KICA8dGV4dCB4PSIzMDAiIHk9IjIwNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzZlNmU3MyI+PHRzcGFuIGZvbnQtd2VpZ2h0PSI3MDAiIGZpbGw9IiMxYzFjMWUiPm1pbmRlc3RlbnMgZWlubWFsPC90c3Bhbj4uPC90ZXh0Pgo8L3N2Zz4K",HW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjUwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMjUwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHJlY3QgeD0iMTIwIiB5PSIxNCIgd2lkdGg9IjE2MCIgaGVpZ2h0PSIzNCIgcng9IjYiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjAwIiB5PSIzNiIgdGV4dC1hbmNob3I9Im1pZGRsZSI+4pGgIFN0YXJ0IDx0c3BhbiBmaWxsPSIjNmU2ZTczIj4obnVyIGVpbm1hbCk8L3RzcGFuPjwvdGV4dD4KICA8cmVjdCB4PSIxMjAiIHk9Ijc2IiB3aWR0aD0iMTYwIiBoZWlnaHQ9IjM0IiByeD0iMTciIGZpbGw9IiNmZWYzYzciIHN0cm9rZT0iI2I0NTMwOSIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjAwIiB5PSI5OCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+4pGhIEJlZGluZ3VuZyBwcsO8ZmVuPC90ZXh0PgogIDxyZWN0IHg9IjEyMCIgeT0iMTM4IiB3aWR0aD0iMTYwIiBoZWlnaHQ9IjM0IiByeD0iNiIgZmlsbD0iI2RiZWFmZSIgc3Ryb2tlPSIjMWQ0ZWQ4IiBzdHJva2Utd2lkdGg9IjIiLz4KICA8dGV4dCB4PSIyMDAiIHk9IjE2MCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+4pGiIEluaGFsdCBhdXNmw7xocmVuPC90ZXh0PgogIDxyZWN0IHg9IjEyMCIgeT0iMjAwIiB3aWR0aD0iMTYwIiBoZWlnaHQ9IjM0IiByeD0iNiIgZmlsbD0iI2RjZmNlNyIgc3Ryb2tlPSIjMTU4MDNkIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8dGV4dCB4PSIyMDAiIHk9IjIyMiIgdGV4dC1hbmNob3I9Im1pZGRsZSI+4pGjIFNjaHJpdHQsIHouIEIuIGkrKzwvdGV4dD4KICA8ZyBmaWxsPSJub25lIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI2EpIj4KICAgIDxsaW5lIHgxPSIyMDAiIHkxPSI0OCIgeDI9IjIwMCIgeTI9Ijc0Ii8+CiAgICA8bGluZSB4MT0iMjAwIiB5MT0iMTEwIiB4Mj0iMjAwIiB5Mj0iMTM2Ii8+CiAgICA8bGluZSB4MT0iMjAwIiB5MT0iMTcyIiB4Mj0iMjAwIiB5Mj0iMTk4Ii8+CiAgICA8cGF0aCBkPSJNMTIwIDIxNyBDNjAgMjE3LCA2MCA5MywgMTE4IDkzIi8+CiAgICA8cGF0aCBkPSJNMjgwIDkzIEwzMzAgOTMiLz4KICA8L2c+CiAgPHRleHQgeD0iMjA4IiB5PSIxMjkiIGZpbGw9IiMxNTgwM2QiIGZvbnQtd2VpZ2h0PSI2MDAiPnRydWU8L3RleHQ+CiAgPHRleHQgeD0iNDgiIHk9IjE2MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzZlNmU3MyI+enVyw7xjazwvdGV4dD4KICA8dGV4dCB4PSI0OCIgeT0iMTc2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj56dSDikaE8L3RleHQ+CiAgPHRleHQgeD0iMzAwIiB5PSI4NCIgZmlsbD0iI2I5MWMxYyIgZm9udC13ZWlnaHQ9IjYwMCI+ZmFsc2U8L3RleHQ+CiAgPHRleHQgeD0iMzM2IiB5PSI5OCI+ZmVydGlnPC90ZXh0Pgo8L3N2Zz4K",VW=""+new URL("l12-while-zu-for-Cu-8sS5S.svg",import.meta.url).href,qW=""+new URL("l13-verschachtelt-tabelle-CmsFvxQ5.svg",import.meta.url).href,QW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMTkwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMDA3YWZmIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMTkwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHRleHQgeD0iMjAiIHk9IjI0IiBmb250LWZhbWlseT0idWktbW9ub3NwYWNlLCBNZW5sbywgQ29uc29sYXMsIG1vbm9zcGFjZSIgZm9udC1zaXplPSIxNCI+aW50W10gemFobGVuID0gezIsIDQsIDYsIDgsIDEwfTwvdGV4dD4KICA8dGV4dCB4PSIyMCIgeT0iNTQiIGZpbGw9IiM2ZTZlNzMiIGZvbnQtc2l6ZT0iMTIiPkluZGV4PC90ZXh0PgogIDx0ZXh0IHg9IjkwIiB5PSI1NCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzAwN2FmZiIgZm9udC13ZWlnaHQ9IjcwMCI+MDwvdGV4dD48cmVjdCB4PSI2MCIgeT0iNjIiIHdpZHRoPSI2MCIgaGVpZ2h0PSI0NiIgZmlsbD0iI2YyZjJmNyIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz48dGV4dCB4PSI5MCIgeT0iOTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTgiIGZvbnQtd2VpZ2h0PSI2MDAiPjI8L3RleHQ+CiAgPHRleHQgeD0iMTUwIiB5PSI1NCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzAwN2FmZiIgZm9udC13ZWlnaHQ9IjcwMCI+MTwvdGV4dD48cmVjdCB4PSIxMjAiIHk9IjYyIiB3aWR0aD0iNjAiIGhlaWdodD0iNDYiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIyIi8+PHRleHQgeD0iMTUwIiB5PSI5MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxOCIgZm9udC13ZWlnaHQ9IjYwMCI+NDwvdGV4dD4KICA8dGV4dCB4PSIyMTAiIHk9IjU0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjMDA3YWZmIiBmb250LXdlaWdodD0iNzAwIj4yPC90ZXh0PjxyZWN0IHg9IjE4MCIgeT0iNjIiIHdpZHRoPSI2MCIgaGVpZ2h0PSI0NiIgZmlsbD0iI2YyZjJmNyIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz48dGV4dCB4PSIyMTAiIHk9IjkyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE4IiBmb250LXdlaWdodD0iNjAwIj42PC90ZXh0PgogIDx0ZXh0IHg9IjI3MCIgeT0iNTQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMwMDdhZmYiIGZvbnQtd2VpZ2h0PSI3MDAiPjM8L3RleHQ+PHJlY3QgeD0iMjQwIiB5PSI2MiIgd2lkdGg9IjYwIiBoZWlnaHQ9IjQ2IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMiIvPjx0ZXh0IHg9IjI3MCIgeT0iOTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTgiIGZvbnQtd2VpZ2h0PSI2MDAiPjg8L3RleHQ+CiAgPHRleHQgeD0iMzMwIiB5PSI1NCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzAwN2FmZiIgZm9udC13ZWlnaHQ9IjcwMCI+NDwvdGV4dD48cmVjdCB4PSIzMDAiIHk9IjYyIiB3aWR0aD0iNjAiIGhlaWdodD0iNDYiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIyIi8+PHRleHQgeD0iMzMwIiB5PSI5MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxOCIgZm9udC13ZWlnaHQ9IjYwMCI+MTA8L3RleHQ+CiAgPHRleHQgeD0iMjAiIHk9IjkwIiBmaWxsPSIjNmU2ZTczIiBmb250LXNpemU9IjEyIj5XZXJ0PC90ZXh0PgogIDxnIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzAwN2FmZiIgc3Ryb2tlLXdpZHRoPSIxLjgiIG1hcmtlci1lbmQ9InVybCgjYSkiPjxsaW5lIHgxPSI5MCIgeTE9IjE0MCIgeDI9IjkwIiB5Mj0iMTEyIi8+PGxpbmUgeDE9IjMzMCIgeTE9IjE0MCIgeDI9IjMzMCIgeTI9IjExMiIvPjwvZz4KICA8ZyBmb250LWZhbWlseT0idWktbW9ub3NwYWNlLCBNZW5sbywgQ29uc29sYXMsIG1vbm9zcGFjZSIgZm9udC1zaXplPSIxMyIgdGV4dC1hbmNob3I9Im1pZGRsZSI+PHRleHQgeD0iOTAiIHk9IjE1NiI+emFobGVuWzBdIGlzdCAyPC90ZXh0Pjx0ZXh0IHg9IjMzMCIgeT0iMTU2Ij56YWhsZW5bNF0gaXN0IDEwPC90ZXh0PjwvZz4KICA8dGV4dCB4PSIyMDAiIHk9IjE4MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzZlNmU3MyI+NSBGw6RjaGVyLCBnZXrDpGhsdCB3aXJkIGFiIDA6IGRlciBsZXR6dGUgSW5kZXggaXN0IDQuPC90ZXh0Pgo8L3N2Zz4K",UW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDAgMjkwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0NDAiIGhlaWdodD0iMjkwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHJlY3QgeD0iMTEwIiB5PSIxMiIgd2lkdGg9IjIyMCIgaGVpZ2h0PSI0OCIgcng9IjYiIGZpbGw9IiNkYmVhZmUiIHN0cm9rZT0iIzFkNGVkOCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjIwIiB5PSIzMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1mYW1pbHk9InVpLW1vbm9zcGFjZSwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2UiIGZvbnQtd2VpZ2h0PSI2MDAiPnJlY2huZXIuY3BwPC90ZXh0PgogIDx0ZXh0IHg9IjIyMCIgeT0iNTEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiMzYTNhM2MiPlF1ZWxsY29kZSBpbiBDKys8L3RleHQ+CiAgPGcgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNhKSI+CiAgICA8bGluZSB4MT0iMjIwIiB5MT0iNjAiIHgyPSI4MCIgeTI9Ijk0Ii8+CiAgICA8bGluZSB4MT0iODAiIHkxPSIxMjYiIHgyPSI4MCIgeTI9IjE1NiIvPgogICAgPGxpbmUgeDE9IjIyMCIgeTE9IjYwIiB4Mj0iMjIwIiB5Mj0iOTQiLz4KICAgIDxsaW5lIHgxPSIyMjAiIHkxPSIxMjYiIHgyPSIyMjAiIHkyPSIxNTYiLz4KICAgIDxsaW5lIHgxPSIyMjAiIHkxPSI2MCIgeDI9IjM2MCIgeTI9Ijk0Ii8+CiAgICA8bGluZSB4MT0iMzYwIiB5MT0iMTI2IiB4Mj0iMzYwIiB5Mj0iMTU2Ii8+CiAgPC9nPgogIDxyZWN0IHg9IjE4IiB5PSI5NiIgd2lkdGg9IjEyNCIgaGVpZ2h0PSIzMCIgcng9IjE1IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiM2ZTZlNzMiIHN0cm9rZS13aWR0aD0iMS41Ii8+CiAgPHRleHQgeD0iODAiIHk9IjExNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyI+Q29tcGlsZXI8L3RleHQ+CiAgPHJlY3QgeD0iMTgiIHk9IjE1OCIgd2lkdGg9IjEyNCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNmZWUyZTIiIHN0cm9rZT0iI2I5MWMxYyIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iODAiIHk9IjE4MSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+TWFzY2hpbmVuY29kZTwvdGV4dD4KICA8cmVjdCB4PSIxOCIgeT0iMTk0IiB3aWR0aD0iMTI0IiBoZWlnaHQ9IjM2IiByeD0iNiIgZmlsbD0iI2YyZjJmNyIgc3Ryb2tlPSIjNmU2ZTczIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8dGV4dCB4PSI4MCIgeT0iMjE3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5XaW5kb3dzPC90ZXh0PgogIDxyZWN0IHg9IjE1OCIgeT0iOTYiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzAiIHJ4PSIxNSIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjNmU2ZTczIiBzdHJva2Utd2lkdGg9IjEuNSIvPgogIDx0ZXh0IHg9IjIyMCIgeT0iMTE2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIj5Db21waWxlcjwvdGV4dD4KICA8cmVjdCB4PSIxNTgiIHk9IjE1OCIgd2lkdGg9IjEyNCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNmZWUyZTIiIHN0cm9rZT0iI2I5MWMxYyIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjIwIiB5PSIxODEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSI2MDAiPk1hc2NoaW5lbmNvZGU8L3RleHQ+CiAgPHJlY3QgeD0iMTU4IiB5PSIxOTQiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiM2ZTZlNzMiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjIyMCIgeT0iMjE3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5tYWNPUzwvdGV4dD4KICA8cmVjdCB4PSIyOTgiIHk9Ijk2IiB3aWR0aD0iMTI0IiBoZWlnaHQ9IjMwIiByeD0iMTUiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KICA8dGV4dCB4PSIzNjAiIHk9IjExNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyI+Q29tcGlsZXI8L3RleHQ+CiAgPHJlY3QgeD0iMjk4IiB5PSIxNTgiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZmVlMmUyIiBzdHJva2U9IiNiOTFjMWMiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjM2MCIgeT0iMTgxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iNjAwIj5NYXNjaGluZW5jb2RlPC90ZXh0PgogIDxyZWN0IHg9IjI5OCIgeT0iMTk0IiB3aWR0aD0iMTI0IiBoZWlnaHQ9IjM2IiByeD0iNiIgZmlsbD0iI2YyZjJmNyIgc3Ryb2tlPSIjNmU2ZTczIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8dGV4dCB4PSIzNjAiIHk9IjIxNyIgdGV4dC1hbmNob3I9Im1pZGRsZSI+TGludXg8L3RleHQ+CiAgPHRleHQgeD0iMjIwIiB5PSIyNTgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc3R5bGU9Iml0YWxpYyI+RsO8ciBqZWRlcyBTeXN0ZW08L3RleHQ+CiAgPHRleHQgeD0iMjIwIiB5PSIyNzgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc3R5bGU9Iml0YWxpYyI+bmV1IMO8YmVyc2V0emVuPC90ZXh0Pgo8L3N2Zz4K",YW="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDAgMzMwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0NDAiIGhlaWdodD0iMzMwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHJlY3QgeD0iMTEwIiB5PSIxMiIgd2lkdGg9IjIyMCIgaGVpZ2h0PSI0OCIgcng9IjYiIGZpbGw9IiNkYmVhZmUiIHN0cm9rZT0iIzFkNGVkOCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjIwIiB5PSIzMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1mYW1pbHk9InVpLW1vbm9zcGFjZSwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2UiIGZvbnQtd2VpZ2h0PSI2MDAiPkVpbm1hbGVpbnMuamF2YTwvdGV4dD4KICA8dGV4dCB4PSIyMjAiIHk9IjUxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIiBmaWxsPSIjM2EzYTNjIj5RdWVsbGNvZGUsIGbDvHIgTWVuc2NoZW48L3RleHQ+CiAgPHJlY3QgeD0iMTEwIiB5PSIxMDQiIHdpZHRoPSIyMjAiIGhlaWdodD0iNDgiIHJ4PSI2IiBmaWxsPSIjZmVmM2M3IiBzdHJva2U9IiNiNDUzMDkiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjIyMCIgeT0iMTI0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LWZhbWlseT0idWktbW9ub3NwYWNlLCBNZW5sbywgQ29uc29sYXMsIG1vbm9zcGFjZSIgZm9udC13ZWlnaHQ9IjYwMCI+RWlubWFsZWlucy5jbGFzczwvdGV4dD4KICA8dGV4dCB4PSIyMjAiIHk9IjE0MyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyIgZmlsbD0iIzNhM2EzYyI+Qnl0ZWNvZGU6IENBIEZFIEJBIEJFIOKApjwvdGV4dD4KICA8ZyBmaWxsPSJub25lIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI2EpIj4KICAgIDxsaW5lIHgxPSIyMjAiIHkxPSI2MCIgeDI9IjIyMCIgeTI9IjEwMiIvPgogICAgPGxpbmUgeDE9IjIyMCIgeTE9IjE1MiIgeDI9IjgwIiB5Mj0iMTk2Ii8+CiAgICA8bGluZSB4MT0iMjIwIiB5MT0iMTUyIiB4Mj0iMjIwIiB5Mj0iMTk2Ii8+CiAgICA8bGluZSB4MT0iMjIwIiB5MT0iMTUyIiB4Mj0iMzYwIiB5Mj0iMTk2Ii8+CiAgPC9nPgogIDx0ZXh0IHg9IjIzMCIgeT0iODYiPkNvbXBpbGVyIGphdmFjPC90ZXh0PgogIDxyZWN0IHg9IjE4IiB5PSIxOTgiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZGNmY2U3IiBzdHJva2U9IiMxNTgwM2QiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjgwIiB5PSIyMjEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSI2MDAiPkpWTTwvdGV4dD4KICA8cmVjdCB4PSIxOCIgeT0iMjM0IiB3aWR0aD0iMTI0IiBoZWlnaHQ9IjM2IiByeD0iNiIgZmlsbD0iI2YyZjJmNyIgc3Ryb2tlPSIjNmU2ZTczIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8dGV4dCB4PSI4MCIgeT0iMjU3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5XaW5kb3dzPC90ZXh0PgogIDxyZWN0IHg9IjE1OCIgeT0iMTk4IiB3aWR0aD0iMTI0IiBoZWlnaHQ9IjM2IiByeD0iNiIgZmlsbD0iI2RjZmNlNyIgc3Ryb2tlPSIjMTU4MDNkIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8dGV4dCB4PSIyMjAiIHk9IjIyMSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+SlZNPC90ZXh0PgogIDxyZWN0IHg9IjE1OCIgeT0iMjM0IiB3aWR0aD0iMTI0IiBoZWlnaHQ9IjM2IiByeD0iNiIgZmlsbD0iI2YyZjJmNyIgc3Ryb2tlPSIjNmU2ZTczIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8dGV4dCB4PSIyMjAiIHk9IjI1NyIgdGV4dC1hbmNob3I9Im1pZGRsZSI+bWFjT1M8L3RleHQ+CiAgPHJlY3QgeD0iMjk4IiB5PSIxOTgiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZGNmY2U3IiBzdHJva2U9IiMxNTgwM2QiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjM2MCIgeT0iMjIxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iNjAwIj5KVk08L3RleHQ+CiAgPHJlY3QgeD0iMjk4IiB5PSIyMzQiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiM2ZTZlNzMiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjM2MCIgeT0iMjU3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5MaW51eDwvdGV4dD4KICA8dGV4dCB4PSIyMjAiIHk9IjI5OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zdHlsZT0iaXRhbGljIj5FaW5tYWwgc2NocmVpYmVuLDwvdGV4dD4KICA8dGV4dCB4PSIyMjAiIHk9IjMxOCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zdHlsZT0iaXRhbGljIj7DvGJlcmFsbCBhdXNmw7xocmVuPC90ZXh0Pgo8L3N2Zz4K",$W=""+new URL("margaret-hamilton-pYPKs1sU.jpg",import.meta.url).href,KW=""+new URL("mvc-klick-KmFKqxH-.svg",import.meta.url).href,XW=""+new URL("aufgabe-mehrwertsteuer-KUkerRBd.svg",import.meta.url).href,eE=""+new URL("kino-saal-BOvcmdzb.svg",import.meta.url).href,tE=""+new URL("kino-schleifen-Ci9yPnbo.svg",import.meta.url).href,nE="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgNDkyIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iNDkyIiBmaWxsPSIjZmZmZmZmIi8+CiAgPGcgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiPgogICAgPCEtLSBTdGFydCAtLT4KICAgIDxyZWN0IHg9IjEwMCIgeT0iMTAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMjgiIHJ4PSIxNCIgZmlsbD0iI2QxZjJkOSIvPgogICAgPGxpbmUgeDE9IjE1MCIgeTE9IjM4IiB4Mj0iMTUwIiB5Mj0iNTQiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICAgIDwhLS0gQW53ZWlzdW5nIC0tPgogICAgPHJlY3QgeD0iNTAiIHk9IjU2IiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjMwIiBmaWxsPSIjZTVmMGZmIi8+CiAgICA8bGluZSB4MT0iMTUwIiB5MT0iODYiIHgyPSIxNTAiIHkyPSI5OCIgbWFya2VyLWVuZD0idXJsKCNhKSIvPgogICAgPCEtLSBSYXV0ZSAxIC0tPgogICAgPHBhdGggZD0iTTE1MCAxMDAgTDIzNSAxMjggTDE1MCAxNTYgTDY1IDEyOCBaIiBmaWxsPSIjZmZmNGQ2Ii8+CiAgICA8bGluZSB4MT0iMTUwIiB5MT0iMTU2IiB4Mj0iMTUwIiB5Mj0iMTcyIiBtYXJrZXItZW5kPSJ1cmwoI2EpIi8+CiAgICA8cmVjdCB4PSI1MCIgeT0iMTc0IiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjMwIiBmaWxsPSIjZTVmMGZmIi8+CiAgICA8bGluZSB4MT0iMTUwIiB5MT0iMjA0IiB4Mj0iMTUwIiB5Mj0iMjUwIiBtYXJrZXItZW5kPSJ1cmwoI2EpIi8+CiAgICA8IS0tIG5laW4tV2VnIHVtIGRlbiBLYXN0ZW4gaGVydW0gLS0+CiAgICA8cG9seWxpbmUgcG9pbnRzPSIyMzUsMTI4IDI4NSwxMjggMjg1LDIyMiAxNTAsMjIyIiBmaWxsPSJub25lIiBtYXJrZXItZW5kPSJ1cmwoI2EpIi8+CiAgICA8IS0tIFJhdXRlIDIgLS0+CiAgICA8cGF0aCBkPSJNMTUwIDI1MiBMMjM1IDI4MCBMMTUwIDMwOCBMNjUgMjgwIFoiIGZpbGw9IiNmZmY0ZDYiLz4KICAgIDxsaW5lIHgxPSIyMzUiIHkxPSIyODAiIHgyPSIyNjgiIHkyPSIyODAiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICAgIDxyZWN0IHg9IjI3MCIgeT0iMjY1IiB3aWR0aD0iMTE1IiBoZWlnaHQ9IjMwIiBmaWxsPSIjZTVmMGZmIi8+CiAgICA8IS0tIHp1csO8Y2sgenVyIFByw7xmdW5nIC0tPgogICAgPHBvbHlsaW5lIHBvaW50cz0iMzI3LDI2NSAzMjcsMjM4IDE1MCwyMzgiIGZpbGw9Im5vbmUiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICAgIDxsaW5lIHgxPSIxNTAiIHkxPSIzMDgiIHgyPSIxNTAiIHkyPSIzMjYiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICAgIDxyZWN0IHg9IjUwIiB5PSIzMjgiIHdpZHRoPSIyMDAiIGhlaWdodD0iMzAiIGZpbGw9IiNlNWYwZmYiLz4KICAgIDxsaW5lIHgxPSIxNTAiIHkxPSIzNTgiIHgyPSIxNTAiIHkyPSIzNzQiIG1hcmtlci1lbmQ9InVybCgjYSkiLz4KICAgIDwhLS0gRW5kZSAtLT4KICAgIDxyZWN0IHg9IjEwMCIgeT0iMzc2IiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjI4IiByeD0iMTQiIGZpbGw9IiNkMWYyZDkiLz4KICA8L2c+CiAgPGcgdGV4dC1hbmNob3I9Im1pZGRsZSI+CiAgICA8dGV4dCB4PSIxNTAiIHk9IjI5Ij5JbsOtY2lvPC90ZXh0PgogICAgPHRleHQgeD0iMTUwIiB5PSI3NiI+UMO0ciB1bWEgY2jDoXZlbmEgbmEgbWVzYTwvdGV4dD4KICAgIDx0ZXh0IHg9IjE1MCIgeT0iMTMzIj5RdWVyIGHDp8O6Y2FyPzwvdGV4dD4KICAgIDx0ZXh0IHg9IjE1MCIgeT0iMTk0Ij5KdW50YXIgYcOnw7pjYXI8L3RleHQ+CiAgICA8dGV4dCB4PSIxNTAiIHk9IjI4NSI+Q2jDoSBtdWl0byBxdWVudGU/PC90ZXh0PgogICAgPHRleHQgeD0iMzI3LjUiIHk9IjI4NSI+RXNwZXJhciAxIG1pbnV0bzwvdGV4dD4KICAgIDx0ZXh0IHg9IjE1MCIgeT0iMzQ4Ij5CZWJlciBvIGNow6E8L3RleHQ+CiAgICA8dGV4dCB4PSIxNTAiIHk9IjM5NSI+RmltPC90ZXh0PgogIDwvZz4KICA8ZyBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iNjAwIj4KICAgIDx0ZXh0IHg9IjE1NiIgeT0iMTY4IiBmaWxsPSIjMjQ4YTNkIj5zaW08L3RleHQ+CiAgICA8dGV4dCB4PSIyNDIiIHk9IjEyMiIgZmlsbD0iI2Q3MDAxNSI+bsOjbzwvdGV4dD4KICAgIDx0ZXh0IHg9IjI0MCIgeT0iMjc0IiBmaWxsPSIjMjQ4YTNkIj5zaW08L3RleHQ+CiAgICA8dGV4dCB4PSIxNTYiIHk9IjMyMCIgZmlsbD0iI2Q3MDAxNSI+bsOjbzwvdGV4dD4KICA8L2c+CiAgPCEtLSBMZWdlbmRlIC0tPgogIDxsaW5lIHgxPSIxMCIgeTE9IjQxOCIgeDI9IjM5MCIgeTI9IjQxOCIgc3Ryb2tlPSIjZDFkMWQ2Ii8+CiAgPGcgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjEuNSI+CiAgICA8cmVjdCB4PSI0MCIgeT0iNDMwIiB3aWR0aD0iMzYiIGhlaWdodD0iMTgiIHJ4PSI5IiBmaWxsPSIjZDFmMmQ5Ii8+CiAgICA8cmVjdCB4PSIyMjAiIHk9IjQzMCIgd2lkdGg9IjM2IiBoZWlnaHQ9IjE4IiBmaWxsPSIjZTVmMGZmIi8+CiAgICA8cGF0aCBkPSJNNTggNDU4IEw3NiA0NjkgTDU4IDQ4MCBMNDAgNDY5IFoiIGZpbGw9IiNmZmY0ZDYiLz4KICAgIDxwYXRoIGQ9Ik0yMjYgNDYwIEwyNTYgNDYwIEwyNTAgNDc4IEwyMjAgNDc4IFoiIGZpbGw9IiNmMmU2ZmYiLz4KICA8L2c+CiAgPGcgZm9udC1zaXplPSIxMiIgZmlsbD0iIzNhM2EzYyI+CiAgICA8dGV4dCB4PSI4NiIgeT0iNDQzIj5JbsOtY2lvIG91IGZpbTwvdGV4dD4KICAgIDx0ZXh0IHg9IjI2NiIgeT0iNDQzIj5JbnN0cnXDp8OjbzwvdGV4dD4KICAgIDx0ZXh0IHg9Ijg2IiB5PSI0NzMiPkRlY2lzw6NvPC90ZXh0PgogICAgPHRleHQgeD0iMjY2IiB5PSI0NzMiPkVudHJhZGEgb3Ugc2HDrWRhPC90ZXh0PgogIDwvZz4KPC9zdmc+Cg==",iE="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMTkwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8cmVjdCB3aWR0aD0iNDAwIiBoZWlnaHQ9IjE5MCIgZmlsbD0iI2ZmZmZmZiIvPgogIDx0ZXh0IHg9IjIwIiB5PSIyNCIgZm9udC13ZWlnaHQ9IjYwMCI+T25kZSBmaWNhIG8gZWxlbWVudG8/PC90ZXh0PgogIDxyZWN0IHg9IjIwIiB5PSI0MCIgd2lkdGg9IjE5MCIgaGVpZ2h0PSIzNSIgZmlsbD0iI2RiZWFmZSIvPgogIDxyZWN0IHg9IjIwIiB5PSI3NSIgd2lkdGg9IjE5MCIgaGVpZ2h0PSIzNSIgZmlsbD0iI2RjZmNlNyIvPgogIDxsaW5lIHgxPSIyMCIgeTE9Ijc1IiB4Mj0iMjEwIiB5Mj0iNzUiIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLWRhc2hhcnJheT0iNCAzIi8+CiAgPHJlY3QgeD0iMjAiIHk9IjQwIiB3aWR0aD0iMTkwIiBoZWlnaHQ9IjcwIiBmaWxsPSJub25lIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjExNSIgeT0iNjIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMxZDRlZDgiPm1ldGFkZSBkZSBjaW1hPC90ZXh0PgogIDx0ZXh0IHg9IjExNSIgeT0iOTciIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMxNTgwM2QiPm1ldGFkZSBkZSBiYWl4bzwvdGV4dD4KICA8dGV4dCB4PSIyMjQiIHk9IjYyIj7ihpIgZmljYSA8dHNwYW4gZm9udC13ZWlnaHQ9IjYwMCI+YW50ZXM8L3RzcGFuPjwvdGV4dD4KICA8dGV4dCB4PSIyMjQiIHk9Ijk3Ij7ihpIgZmljYSA8dHNwYW4gZm9udC13ZWlnaHQ9IjYwMCI+ZGVwb2lzPC90c3Bhbj48L3RleHQ+CiAgPHJlY3QgeD0iMjAiIHk9IjEzMiIgd2lkdGg9IjE5MCIgaGVpZ2h0PSI0MCIgZmlsbD0iI2ZlZjNjNyIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8dGV4dCB4PSIxMTUiIHk9IjE1NyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxNiI+w7g8L3RleHQ+CiAgPHRleHQgeD0iMjI0IiB5PSIxNTciPuKGkiA8dHNwYW4gZm9udC13ZWlnaHQ9IjYwMCI+c3Vic3RpdHVpLW88L3RzcGFuPjwvdGV4dD4KPC9zdmc+Cg==",aE=""+new URL("l03-lochkarte-beschriftet-D1QjqGFo.svg",import.meta.url).href,sE=""+new URL("l03-lochkarte-BSn6oWaS.svg",import.meta.url).href,rE="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NjAgMjkwIiBmb250LWZhbWlseT0idWktbW9ub3NwYWNlLCBNZW5sbywgQ29uc29sYXMsIG1vbm9zcGFjZSI+CjxyZWN0IHdpZHRoPSI0NjAiIGhlaWdodD0iMjkwIiBmaWxsPSIjZmZmZmZmIi8+Cjx0ZXh0IHg9IjUwIiB5PSI0NCIgZm9udC1zaXplPSI0MCIgZmlsbD0iIzZlNmU3MyIgdGV4dExlbmd0aD0iMjY0IiBsZW5ndGhBZGp1c3Q9InNwYWNpbmdBbmRHbHlwaHMiPnByZWNvPHRzcGFuIGZpbGw9IiMwMDdhZmYiIGZvbnQtd2VpZ2h0PSI3MDAiPkM8L3RzcGFuPm9tPHRzcGFuIGZpbGw9IiMwMDdhZmYiIGZvbnQtd2VpZ2h0PSI3MDAiPkk8L3RzcGFuPnZhPC90ZXh0Pgo8bGluZSB4MT0iMTgyIiB5MT0iNTQiIHgyPSIxODIiIHkyPSI4MiIgc3Ryb2tlPSIjMDA3YWZmIiBzdHJva2Utd2lkdGg9IjIuNSIgc3Ryb2tlLWRhc2hhcnJheT0iNSA0Ii8+CjxsaW5lIHgxPSIyNTQiIHkxPSI1NCIgeDI9IjI1NCIgeTI9IjgyIiBzdHJva2U9IiMwMDdhZmYiIHN0cm9rZS13aWR0aD0iMi41IiBzdHJva2UtZGFzaGFycmF5PSI1IDQiLz4KPHBhdGggZD0iTTIwIDI3MiBINDQwIiBzdHJva2U9IiNlNWQzYjAiIHN0cm9rZS13aWR0aD0iNCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjxwYXRoIGQ9Ik0xNTYgMTcyIEwxNTAgMjI2IiBzdHJva2U9IiNiODhhNTIiIHN0cm9rZS13aWR0aD0iMTMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTUwIDIyNiBMMTU2IDI2MiIgc3Ryb2tlPSIjYjg4YTUyIiBzdHJva2Utd2lkdGg9IjgiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8Y2lyY2xlIGN4PSIxNTAiIGN5PSIyMjYiIHI9IjYiIGZpbGw9IiM3YTU1MzAiIG9wYWNpdHk9IjAuNTUiLz4KPGVsbGlwc2UgY3g9IjE2MSIgY3k9IjI2NyIgcng9IjExIiByeT0iNSIgZmlsbD0iIzdhNTUzMCIvPgo8cGF0aCBkPSJNMzA0IDE3MiBMMzA4IDIyNiIgc3Ryb2tlPSIjYjg4YTUyIiBzdHJva2Utd2lkdGg9IjEzIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPHBhdGggZD0iTTMwOCAyMjYgTDMwNCAyNjIiIHN0cm9rZT0iI2I4OGE1MiIgc3Ryb2tlLXdpZHRoPSI4IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPGNpcmNsZSBjeD0iMzA4IiBjeT0iMjI2IiByPSI2IiBmaWxsPSIjN2E1NTMwIiBvcGFjaXR5PSIwLjU1Ii8+CjxlbGxpcHNlIGN4PSIzMDkiIGN5PSIyNjciIHJ4PSIxMSIgcnk9IjUiIGZpbGw9IiM3YTU1MzAiLz4KPHBhdGggZD0iTTEyMCAxNDAgQzEwNCAxNTAgMTA0IDE3NiAxMTAgMTk2IiBmaWxsPSJub25lIiBzdHJva2U9IiNiODhhNTIiIHN0cm9rZS13aWR0aD0iNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjxlbGxpcHNlIGN4PSIxMTAiIGN5PSIyMDAiIHJ4PSI1IiByeT0iOSIgZmlsbD0iIzdhNTUzMCIvPgo8cGF0aCBkPSJNMTIwIDE3MiBDMTA4IDE1MiAxMTQgMTI4IDEzNCAxMjIgQzE0OCAxMjAgMTU0IDg0IDE4MiA4NCBDMjEwIDg0IDIwOCAxMjYgMjE4IDEyNCBDMjI4IDEyNiAyMjYgODQgMjU0IDg0IEMyODIgODQgMjg0IDEyMiAyOTQgMTI4IEMzMTYgMTMyIDMyNCAxNTggMzQwIDE1OCBDMzUyIDE1OCAzNTQgMTI0IDM1OCAxMTAgQzM2MiA5OCAzNzYgOTYgMzg4IDk5IEM0MDAgMTAyIDQwNiAxMDggNDA0IDExNiBDNDAyIDEyMyAzOTAgMTI0IDM4MCAxMjIgQzM3MiAxMjIgMzcwIDEyOCAzNzAgMTM2IEMzNzAgMTYyIDM2NCAxODQgMzQyIDE4NiBDMzI2IDE4OCAzMTYgMTgyIDMwNiAxNzggQzI0OCAxODggMTg4IDE4OCAxNDAgMTgyIEMxMzAgMTgwIDEyNCAxNzcgMTIwIDE3MiBaIiBmaWxsPSIjZDJhNTZhIiBzdHJva2U9IiM3YTU1MzAiIHN0cm9rZS13aWR0aD0iMi41IiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0xMzQgMTcyIEwxMjggMjI2IiBzdHJva2U9IiNkMmE1NmEiIHN0cm9rZS13aWR0aD0iMTMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8cGF0aCBkPSJNMTI4IDIyNiBMMTM0IDI2MiIgc3Ryb2tlPSIjZDJhNTZhIiBzdHJva2Utd2lkdGg9IjgiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8Y2lyY2xlIGN4PSIxMjgiIGN5PSIyMjYiIHI9IjYiIGZpbGw9IiM3YTU1MzAiIG9wYWNpdHk9IjAuNTUiLz4KPGVsbGlwc2UgY3g9IjEzOSIgY3k9IjI2NyIgcng9IjExIiByeT0iNSIgZmlsbD0iIzdhNTUzMCIvPgo8cGF0aCBkPSJNMjg0IDE3MiBMMjg4IDIyNiIgc3Ryb2tlPSIjZDJhNTZhIiBzdHJva2Utd2lkdGg9IjEzIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPHBhdGggZD0iTTI4OCAyMjYgTDI4NCAyNjIiIHN0cm9rZT0iI2QyYTU2YSIgc3Ryb2tlLXdpZHRoPSI4IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPGNpcmNsZSBjeD0iMjg4IiBjeT0iMjI2IiByPSI2IiBmaWxsPSIjN2E1NTMwIiBvcGFjaXR5PSIwLjU1Ii8+CjxlbGxpcHNlIGN4PSIyODkiIGN5PSIyNjciIHJ4PSIxMSIgcnk9IjUiIGZpbGw9IiM3YTU1MzAiLz4KPHBhdGggZD0iTTM2NiAxMDMgTDM2MiA5MiBMMzc0IDEwMCBaIiBmaWxsPSIjZDJhNTZhIiBzdHJva2U9IiM3YTU1MzAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8Y2lyY2xlIGN4PSIzODIiIGN5PSIxMDciIHI9IjMuMiIgZmlsbD0iIzFjMWMxZSIvPgo8cGF0aCBkPSJNMzc3IDEwNCBRMzgyIDEwMSAzODcgMTA0IiBmaWxsPSJub25lIiBzdHJva2U9IiM3YTU1MzAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjxwYXRoIGQ9Ik0zOTggMTA3IHE0IDEgNSA0IiBmaWxsPSJub25lIiBzdHJva2U9IiM3YTU1MzAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+CjxwYXRoIGQ9Ik0zOTIgMTE5IFEzOTggMTE4IDQwMyAxMTciIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzdhNTUzMCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPC9zdmc+Cg==",oE="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjEwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8cmVjdCB3aWR0aD0iNDAwIiBoZWlnaHQ9IjIxMCIgZmlsbD0iI2ZmZmZmZiIvPgogIDx0ZXh0IHg9IjIwMCIgeT0iMjQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtZmFtaWx5PSJ1aS1tb25vc3BhY2UsIE1lbmxvLCBDb25zb2xhcywgbW9ub3NwYWNlIiBmb250LXNpemU9IjE2Ij5pbnQgaWRhZGUgPSAxNDwvdGV4dD4KICA8cGF0aCBkPSJNMTMwIDcwIEwxNzAgNTAgTDMwMCA1MCBMMjYwIDcwIFoiIGZpbGw9IiNjOThhM2MiIHN0cm9rZT0iIzhhNWExZiIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHJlY3QgeD0iMTgwIiB5PSIzNCIgd2lkdGg9IjQ0IiBoZWlnaHQ9IjUwIiByeD0iMyIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjNmU2ZTczIiBzdHJva2Utd2lkdGg9IjEuNSIvPgogIDx0ZXh0IHg9IjIwMiIgeT0iNjAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMjAiIGZvbnQtd2VpZ2h0PSI3MDAiPjE0PC90ZXh0PgogIDxyZWN0IHg9IjEzMCIgeT0iNzAiIHdpZHRoPSIxMzAiIGhlaWdodD0iMTAwIiBmaWxsPSIjZTliODcyIiBzdHJva2U9IiM4YTVhMWYiIHN0cm9rZS13aWR0aD0iMiIvPgogIDxwYXRoIGQ9Ik0yNjAgNzAgTDMwMCA1MCBMMzAwIDE1MCBMMjYwIDE3MCBaIiBmaWxsPSIjZDQ5YTRjIiBzdHJva2U9IiM4YTVhMWYiIHN0cm9rZS13aWR0aD0iMiIvPgogIDxyZWN0IHg9IjE1MCIgeT0iMTAwIiB3aWR0aD0iOTAiIGhlaWdodD0iMzAiIHJ4PSI0IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiM4YTVhMWYiLz4KICA8dGV4dCB4PSIxOTUiIHk9IjEyMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+aWRhZGU8L3RleHQ+CiAgPHJlY3QgeD0iMTM4IiB5PSIxNDIiIHdpZHRoPSIzNCIgaGVpZ2h0PSIyMCIgcng9IjEwIiBmaWxsPSIjMDA3YWZmIi8+CiAgPHRleHQgeD0iMTU1IiB5PSIxNTYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTIiIGZpbGw9IiNmZmZmZmYiIGZvbnQtd2VpZ2h0PSI2MDAiPmludDwvdGV4dD4KICA8ZyBzdHJva2U9IiM2ZTZlNzMiPgogICAgPGxpbmUgeDE9IjMxMCIgeTE9IjQ4IiB4Mj0iMjI2IiB5Mj0iNTIiLz4KICAgIDxsaW5lIHgxPSIzMTAiIHkxPSIxMTUiIHgyPSIyNDIiIHkyPSIxMTUiLz4KICAgIDxsaW5lIHgxPSI4MCIgeTE9IjE1MiIgeDI9IjEzNCIgeTI9IjE1MiIvPgogIDwvZz4KICA8dGV4dCB4PSIzMTYiIHk9IjUyIj5WYWxvcjwvdGV4dD4KICA8dGV4dCB4PSIzMTYiIHk9IjExOSI+Tm9tZTwvdGV4dD4KICA8dGV4dCB4PSI4IiB5PSIxNTYiPlRpcG8gZGUgZGFkb3M8L3RleHQ+CiAgPHRleHQgeD0iMjAwIiB5PSIxOTgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiM2ZTZlNzMiPlBlbG8gbm9tZSBjaGVnYXMgYW8gdmFsb3IuPC90ZXh0Pgo8L3N2Zz4K",lE="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjAwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMDA3YWZmIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMjAwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPGcgZm9udC1mYW1pbHk9InVpLW1vbm9zcGFjZSwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2UiIGZvbnQtc2l6ZT0iMjAiPgogICAgPHRleHQgeD0iNjAiIHk9IjExMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjcwMCI+cG9udG9zPC90ZXh0PgogICAgPHRleHQgeD0iMTI1IiB5PSIxMTAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMwMDdhZmYiIGZvbnQtd2VpZ2h0PSI3MDAiPj08L3RleHQ+CiAgICA8dGV4dCB4PSIyNjAiIHk9IjExMCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+cG9udG9zICsgNTwvdGV4dD4KICA8L2c+CiAgPHJlY3QgeD0iMTgwIiB5PSI4NiIgd2lkdGg9IjE2MCIgaGVpZ2h0PSIzNCIgcng9IjYiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzE1ODAzZCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjYwIiB5PSIxNDgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMxNTgwM2QiPuKRoCBjYWxjdWxhciBhIGRpcmVpdGE6IDEwICsgNSA9IDE1PC90ZXh0PgogIDxwYXRoIGQ9Ik0yNTAgODIgQzIzMCAzMCwgOTAgMzAsIDY0IDg0IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDdhZmYiIHN0cm9rZS13aWR0aD0iMi41IiBtYXJrZXItZW5kPSJ1cmwoI2EpIi8+CiAgPHRleHQgeD0iMTYwIiB5PSIzNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzAwN2FmZiI+4pGhIGd1YXJkYXIgbyByZXN1bHRhZG8gw6AgZXNxdWVyZGE8L3RleHQ+CiAgPHJlY3QgeD0iMjAiIHk9IjE2NCIgd2lkdGg9IjM2MCIgaGVpZ2h0PSIyNiIgcng9IjYiIGZpbGw9IiNmMmYyZjciLz4KICA8dGV4dCB4PSIyMDAiIHk9IjE4MiIgdGV4dC1hbmNob3I9Im1pZGRsZSI+cG9udG9zIGFudGVzOiA8dHNwYW4gZm9udC13ZWlnaHQ9IjcwMCI+MTA8L3RzcGFuPiAgIOKGkiAgIHBvbnRvcyBkZXBvaXM6IDx0c3BhbiBmb250LXdlaWdodD0iNzAwIj4xNTwvdHNwYW4+PC90ZXh0Pgo8L3N2Zz4K",uE="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMzAwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMzAwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPGcgc3Ryb2tlPSIjNmU2ZTczIiBzdHJva2Utd2lkdGg9IjIiIGZpbGw9Im5vbmUiPgogICAgPHBhdGggZD0iTTQwIDExMCBMNDggMTgwIEwxMDIgMTgwIEwxMTAgMTEwIi8+CiAgICA8cGF0aCBkPSJNMTY1IDExMCBMMTczIDE4MCBMMjI3IDE4MCBMMjM1IDExMCIvPgogICAgPHBhdGggZD0iTTI5MCAxMTAgTDI5OCAxODAgTDM1MiAxODAgTDM2MCAxMTAiLz4KICA8L2c+CiAgPHBhdGggZD0iTTQ0IDEzNSBMNDggMTgwIEwxMDIgMTgwIEwxMDYgMTM1IFoiIGZpbGw9IiNmZGJhNzQiLz4KICA8cGF0aCBkPSJNMjk0IDEzNSBMMjk4IDE4MCBMMzUyIDE4MCBMMzU2IDEzNSBaIiBmaWxsPSIjOTNjNWZkIi8+CiAgPHRleHQgeD0iNzUiIHk9IjIwMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+ZXNxdWVyZGE8L3RleHQ+CiAgPHRleHQgeD0iNzUiIHk9IjIxNyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzZlNmU3MyI+c3VtbzwvdGV4dD4KICA8dGV4dCB4PSIyMDAiIHk9IjIwMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+YXV4PC90ZXh0PgogIDx0ZXh0IHg9IjIwMCIgeT0iMjE3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj52YXppbzwvdGV4dD4KICA8dGV4dCB4PSIzMjUiIHk9IjIwMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+ZGlyZWl0YTwvdGV4dD4KICA8dGV4dCB4PSIzMjUiIHk9IjIxNyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzZlNmU3MyI+w6FndWE8L3RleHQ+CiAgPGcgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNhKSI+CiAgICA8cGF0aCBkPSJNODggMTA0IEMxMTAgNzAsIDE2MCA3MCwgMTg2IDEwNCIvPgogICAgPHBhdGggZD0iTTMxOCAxMDQgQzI3MCAxNSwgMTMwIDE1LCA4MiAxMDQiLz4KICAgIDxwYXRoIGQ9Ik0yMTQgMTA0IEMyNDAgNzAsIDI5MCA3MCwgMzEyIDEwNCIvPgogIDwvZz4KICA8ZyBmb250LXdlaWdodD0iNzAwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj4KICAgIDxjaXJjbGUgY3g9IjEzNyIgY3k9IjgwIiByPSIxMSIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMWMxYzFlIi8+PHRleHQgeD0iMTM3IiB5PSI4NSI+MTwvdGV4dD4KICAgIDxjaXJjbGUgY3g9IjIwMCIgY3k9IjM4IiByPSIxMSIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMWMxYzFlIi8+PHRleHQgeD0iMjAwIiB5PSI0MyI+MjwvdGV4dD4KICAgIDxjaXJjbGUgY3g9IjI2MyIgY3k9IjgwIiByPSIxMSIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMWMxYzFlIi8+PHRleHQgeD0iMjYzIiB5PSI4NSI+MzwvdGV4dD4KICA8L2c+CiAgPGcgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1mYW1pbHk9InVpLW1vbm9zcGFjZSwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2UiIGZvbnQtc2l6ZT0iMTIiPgogICAgPHRleHQgeD0iMjAwIiB5PSIyNTAiPjE6IGF1eCA9IGVzcXVlcmRhPC90ZXh0PgogICAgPHRleHQgeD0iMjAwIiB5PSIyNjgiPjI6IGVzcXVlcmRhID0gZGlyZWl0YTwvdGV4dD4KICAgIDx0ZXh0IHg9IjIwMCIgeT0iMjg2Ij4zOiBkaXJlaXRhID0gYXV4PC90ZXh0PgogIDwvZz4KPC9zdmc+Cg==",mE="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMTUwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8cmVjdCB3aWR0aD0iNDAwIiBoZWlnaHQ9IjE1MCIgZmlsbD0iI2ZmZmZmZiIvPgogIDxyZWN0IHg9IjIwIiB5PSI1MCIgd2lkdGg9IjgwIiBoZWlnaHQ9IjI0IiBmaWxsPSIjZmVlMmUyIi8+PHJlY3QgeD0iMzAwIiB5PSI1MCIgd2lkdGg9IjgwIiBoZWlnaHQ9IjI0IiBmaWxsPSIjZmVlMmUyIi8+CiAgPHJlY3QgeD0iMTAwIiB5PSI1MCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyNCIgZmlsbD0iI2RjZmNlNyIvPgogIDxsaW5lIHgxPSIyMCIgeTE9Ijc0IiB4Mj0iMzgwIiB5Mj0iNzQiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPGxpbmUgeDE9IjUwIiB5MT0iNjgiIHgyPSI1MCIgeTI9IjgwIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMiIvPjx0ZXh0IHg9IjUwIiB5PSI5OCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+MDwvdGV4dD4KICA8bGluZSB4MT0iMTAwIiB5MT0iNjgiIHgyPSIxMDAiIHkyPSI4MCIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz48dGV4dCB4PSIxMDAiIHk9Ijk4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj4xPC90ZXh0PgogIDxsaW5lIHgxPSIxNTAiIHkxPSI2OCIgeDI9IjE1MCIgeTI9IjgwIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMiIvPjx0ZXh0IHg9IjE1MCIgeT0iOTgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPjI8L3RleHQ+CiAgPGxpbmUgeDE9IjIwMCIgeTE9IjY4IiB4Mj0iMjAwIiB5Mj0iODAiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIyIi8+PHRleHQgeD0iMjAwIiB5PSI5OCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+MzwvdGV4dD4KICA8bGluZSB4MT0iMjUwIiB5MT0iNjgiIHgyPSIyNTAiIHkyPSI4MCIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz48dGV4dCB4PSIyNTAiIHk9Ijk4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj40PC90ZXh0PgogIDxsaW5lIHgxPSIzMDAiIHkxPSI2OCIgeDI9IjMwMCIgeTI9IjgwIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMiIvPjx0ZXh0IHg9IjMwMCIgeT0iOTgiIHRleHQtYW5jaG9yPSJtaWRkbGUiPjU8L3RleHQ+CiAgPGxpbmUgeDE9IjM1MCIgeTE9IjY4IiB4Mj0iMzUwIiB5Mj0iODAiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIyIi8+PHRleHQgeD0iMzUwIiB5PSI5OCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+NjwvdGV4dD4KICA8Y2lyY2xlIGN4PSIxMDAiIGN5PSI3NCIgcj0iNiIgZmlsbD0iIzE1ODAzZCIvPjxjaXJjbGUgY3g9IjMwMCIgY3k9Ijc0IiByPSI2IiBmaWxsPSIjMTU4MDNkIi8+CiAgPHRleHQgeD0iMjAwIiB5PSI0MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzE1ODAzZCIgZm9udC13ZWlnaHQ9IjYwMCI+dsOhbGlkYTwvdGV4dD4KICA8dGV4dCB4PSI1MCIgeT0iNDAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiNiOTFjMWMiIGZvbnQtd2VpZ2h0PSI2MDAiPmludsOhbGlkYTwvdGV4dD48dGV4dCB4PSIzNTAiIHk9IjQwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjYjkxYzFjIiBmb250LXdlaWdodD0iNjAwIj5pbnbDoWxpZGE8L3RleHQ+CiAgPGcgZm9udC1mYW1pbHk9InVpLW1vbm9zcGFjZSwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2UiIGZvbnQtc2l6ZT0iMTMiIHRleHQtYW5jaG9yPSJtaWRkbGUiPgogICAgPHRleHQgeD0iMjAwIiB5PSIxMjQiIGZpbGw9IiMxNTgwM2QiPm5vdGEgJmd0Oz0gMSAmYW1wOyZhbXA7IG5vdGEgJmx0Oz0gNTwvdGV4dD4KICAgIDx0ZXh0IHg9IjIwMCIgeT0iMTQyIiBmaWxsPSIjYjkxYzFjIj5ub3RhICZsdDsgMSB8fCBub3RhICZndDsgNTwvdGV4dD4KICA8L2c+Cjwvc3ZnPgo=",cE="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjMwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMjMwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHRleHQgeD0iMjAiIHk9IjI0IiBmb250LXdlaWdodD0iNjAwIj5Db21vIGZ1bmNpb25hIG8gY2ljbG8gd2hpbGU8L3RleHQ+CiAgPHJlY3QgeD0iMTIwIiB5PSI0NCIgd2lkdGg9IjE2MCIgaGVpZ2h0PSI0MCIgcng9IjIwIiBmaWxsPSIjZmVmM2M3IiBzdHJva2U9IiNiNDUzMDkiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjIwMCIgeT0iNjkiIHRleHQtYW5jaG9yPSJtaWRkbGUiPuKRoCB2ZXJpZmljYXIgYSBjb25kacOnw6NvPC90ZXh0PgogIDxyZWN0IHg9IjEyMCIgeT0iMTI4IiB3aWR0aD0iMTYwIiBoZWlnaHQ9IjQwIiByeD0iNiIgZmlsbD0iI2RiZWFmZSIgc3Ryb2tlPSIjMWQ0ZWQ4IiBzdHJva2Utd2lkdGg9IjIiLz4KICA8dGV4dCB4PSIyMDAiIHk9IjE1MyIgdGV4dC1hbmNob3I9Im1pZGRsZSI+4pGhIGV4ZWN1dGFyIG8gaW50ZXJpb3I8L3RleHQ+CiAgPGcgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNhKSI+CiAgICA8bGluZSB4MT0iMjAwIiB5MT0iODQiIHgyPSIyMDAiIHkyPSIxMjYiLz4KICAgIDxwYXRoIGQ9Ik0xMjAgMTQ4IEM4MCAxNDgsIDgwIDY0LCAxMTggNjQiLz4KICAgIDxwYXRoIGQ9Ik0yODAgNjQgTDM0MCA2NCBMMzQwIDIwMCBMMjgyIDIwMCIvPgogIDwvZz4KICA8dGV4dCB4PSIyMDgiIHk9IjExMCIgZmlsbD0iIzE1ODAzZCIgZm9udC13ZWlnaHQ9IjYwMCI+dHJ1ZTwvdGV4dD4KICA8dGV4dCB4PSIzOCIgeT0iMTEwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj52b2x0YXI8L3RleHQ+CiAgPHRleHQgeD0iMzgiIHk9IjEyNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzZlNmU3MyI+cGFyYSBjaW1hPC90ZXh0PgogIDx0ZXh0IHg9IjM0OCIgeT0iMTM0IiBmaWxsPSIjYjkxYzFjIiBmb250LXdlaWdodD0iNjAwIj5mYWxzZTwvdGV4dD4KICA8dGV4dCB4PSIyNzYiIHk9IjIwNSIgdGV4dC1hbmNob3I9ImVuZCI+Y29udGludWFyIHBvciBiYWl4byBkbyBjaWNsbzwvdGV4dD4KPC9zdmc+Cg==",dE="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjMwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMjMwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHRleHQgeD0iMTAwIiB5PSIyMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+cHLDqS10ZXN0ZSAod2hpbGUpPC90ZXh0PgogIDx0ZXh0IHg9IjMwMCIgeT0iMjIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSI2MDAiPnDDs3MtdGVzdGUgKGRvLXdoaWxlKTwvdGV4dD4KICA8bGluZSB4MT0iMjAwIiB5MT0iMTAiIHgyPSIyMDAiIHkyPSIyMjAiIHN0cm9rZT0iI2QxZDFkNiIvPgogIDxyZWN0IHg9IjM1IiB5PSI0NCIgd2lkdGg9IjEzMCIgaGVpZ2h0PSIzNiIgcng9IjE4IiBmaWxsPSIjZmVmM2M3IiBzdHJva2U9IiNiNDUzMDkiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjEwMCIgeT0iNjciIHRleHQtYW5jaG9yPSJtaWRkbGUiPuKRoCBjb25kacOnw6NvPC90ZXh0PgogIDxyZWN0IHg9IjM1IiB5PSIxMjQiIHdpZHRoPSIxMzAiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZGJlYWZlIiBzdHJva2U9IiMxZDRlZDgiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjEwMCIgeT0iMTQ3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj7ikaEgaW50ZXJpb3I8L3RleHQ+CiAgPHJlY3QgeD0iMjM1IiB5PSI0NCIgd2lkdGg9IjEzMCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNkYmVhZmUiIHN0cm9rZT0iIzFkNGVkOCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMzAwIiB5PSI2NyIgdGV4dC1hbmNob3I9Im1pZGRsZSI+4pGgIGludGVyaW9yPC90ZXh0PgogIDxyZWN0IHg9IjIzNSIgeT0iMTI0IiB3aWR0aD0iMTMwIiBoZWlnaHQ9IjM2IiByeD0iMTgiIGZpbGw9IiNmZWYzYzciIHN0cm9rZT0iI2I0NTMwOSIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMzAwIiB5PSIxNDciIHRleHQtYW5jaG9yPSJtaWRkbGUiPuKRoSBjb25kacOnw6NvPC90ZXh0PgogIDxnIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIxLjYiIG1hcmtlci1lbmQ9InVybCgjYSkiPgogICAgPGxpbmUgeDE9IjEwMCIgeTE9IjgwIiB4Mj0iMTAwIiB5Mj0iMTIyIi8+CiAgICA8cGF0aCBkPSJNMzUgMTQyIEM4IDE0MiwgOCA2MiwgMzMgNjIiLz4KICAgIDxsaW5lIHgxPSIzMDAiIHkxPSI4MCIgeDI9IjMwMCIgeTI9IjEyMiIvPgogICAgPHBhdGggZD0iTTM2NSAxNDIgQzM5MiAxNDIsIDM5MiA2MiwgMzY3IDYyIi8+CiAgPC9nPgogIDx0ZXh0IHg9IjEwNiIgeT0iMTA2IiBmaWxsPSIjMTU4MDNkIiBmb250LXdlaWdodD0iNjAwIj50cnVlPC90ZXh0PgogIDx0ZXh0IHg9IjM4MCIgeT0iMTA2IiB0ZXh0LWFuY2hvcj0iZW5kIiBmaWxsPSIjMTU4MDNkIiBmb250LXdlaWdodD0iNjAwIj50cnVlPC90ZXh0PgogIDx0ZXh0IHg9IjEwMCIgeT0iMTkwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj5TZSBhIGNvbmRpw6fDo28gZm9yIGxvZ28gZmFsc2EsPC90ZXh0PgogIDx0ZXh0IHg9IjEwMCIgeT0iMjA2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjNmU2ZTczIj5vIGludGVyaW9yIDx0c3BhbiBmb250LXdlaWdodD0iNzAwIiBmaWxsPSIjMWMxYzFlIj5udW5jYTwvdHNwYW4+IMOpIGV4ZWN1dGFkby48L3RleHQ+CiAgPHRleHQgeD0iMzAwIiB5PSIxOTAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiM2ZTZlNzMiPk8gaW50ZXJpb3Igw6kgc2VtcHJlIGV4ZWN1dGFkbzwvdGV4dD4KICA8dGV4dCB4PSIzMDAiIHk9IjIwNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzZlNmU3MyI+PHRzcGFuIGZvbnQtd2VpZ2h0PSI3MDAiIGZpbGw9IiMxYzFjMWUiPnBlbG8gbWVub3MgdW1hIHZlejwvdHNwYW4+LjwvdGV4dD4KPC9zdmc+Cg==",hE="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMjUwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMjUwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHJlY3QgeD0iMTIwIiB5PSIxNCIgd2lkdGg9IjE2MCIgaGVpZ2h0PSIzNCIgcng9IjYiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjAwIiB5PSIzNiIgdGV4dC1hbmNob3I9Im1pZGRsZSI+4pGgIEluw61jaW8gPHRzcGFuIGZpbGw9IiM2ZTZlNzMiPihzw7MgdW1hIHZleik8L3RzcGFuPjwvdGV4dD4KICA8cmVjdCB4PSIxMjAiIHk9Ijc2IiB3aWR0aD0iMTYwIiBoZWlnaHQ9IjM0IiByeD0iMTciIGZpbGw9IiNmZWYzYzciIHN0cm9rZT0iI2I0NTMwOSIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjAwIiB5PSI5OCIgdGV4dC1hbmNob3I9Im1pZGRsZSI+4pGhIHZlcmlmaWNhciBhIGNvbmRpw6fDo288L3RleHQ+CiAgPHJlY3QgeD0iMTIwIiB5PSIxMzgiIHdpZHRoPSIxNjAiIGhlaWdodD0iMzQiIHJ4PSI2IiBmaWxsPSIjZGJlYWZlIiBzdHJva2U9IiMxZDRlZDgiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjIwMCIgeT0iMTYwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj7ikaIgZXhlY3V0YXIgbyBpbnRlcmlvcjwvdGV4dD4KICA8cmVjdCB4PSIxMjAiIHk9IjIwMCIgd2lkdGg9IjE2MCIgaGVpZ2h0PSIzNCIgcng9IjYiIGZpbGw9IiNkY2ZjZTciIHN0cm9rZT0iIzE1ODAzZCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjAwIiB5PSIyMjIiIHRleHQtYW5jaG9yPSJtaWRkbGUiPuKRoyBwYXNzbywgcC4gZXguIGkrKzwvdGV4dD4KICA8ZyBmaWxsPSJub25lIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI2EpIj4KICAgIDxsaW5lIHgxPSIyMDAiIHkxPSI0OCIgeDI9IjIwMCIgeTI9Ijc0Ii8+CiAgICA8bGluZSB4MT0iMjAwIiB5MT0iMTEwIiB4Mj0iMjAwIiB5Mj0iMTM2Ii8+CiAgICA8bGluZSB4MT0iMjAwIiB5MT0iMTcyIiB4Mj0iMjAwIiB5Mj0iMTk4Ii8+CiAgICA8cGF0aCBkPSJNMTIwIDIxNyBDNjAgMjE3LCA2MCA5MywgMTE4IDkzIi8+CiAgICA8cGF0aCBkPSJNMjgwIDkzIEwzMzAgOTMiLz4KICA8L2c+CiAgPHRleHQgeD0iMjA4IiB5PSIxMjkiIGZpbGw9IiMxNTgwM2QiIGZvbnQtd2VpZ2h0PSI2MDAiPnRydWU8L3RleHQ+CiAgPHRleHQgeD0iNDgiIHk9IjE2MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzZlNmU3MyI+dm9sdGFyPC90ZXh0PgogIDx0ZXh0IHg9IjQ4IiB5PSIxNzYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiM2ZTZlNzMiPmFvIOKRoTwvdGV4dD4KICA8dGV4dCB4PSIzMDAiIHk9Ijg0IiBmaWxsPSIjYjkxYzFjIiBmb250LXdlaWdodD0iNjAwIj5mYWxzZTwvdGV4dD4KICA8dGV4dCB4PSIzMzYiIHk9Ijk4Ij5maW08L3RleHQ+Cjwvc3ZnPgo=",gE=""+new URL("l12-while-zu-for-CM2--y57.svg",import.meta.url).href,pE=""+new URL("l13-verschachtelt-tabelle-CR2WySqU.svg",import.meta.url).href,fE="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgMTkwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMDA3YWZmIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0MDAiIGhlaWdodD0iMTkwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHRleHQgeD0iMjAiIHk9IjI0IiBmb250LWZhbWlseT0idWktbW9ub3NwYWNlLCBNZW5sbywgQ29uc29sYXMsIG1vbm9zcGFjZSIgZm9udC1zaXplPSIxNCI+aW50W10gbnVtZXJvcyA9IHsyLCA0LCA2LCA4LCAxMH08L3RleHQ+CiAgPHRleHQgeD0iMjAiIHk9IjU0IiBmaWxsPSIjNmU2ZTczIiBmb250LXNpemU9IjEyIj7DjW5kaWNlPC90ZXh0PgogIDx0ZXh0IHg9IjkwIiB5PSI1NCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzAwN2FmZiIgZm9udC13ZWlnaHQ9IjcwMCI+MDwvdGV4dD48cmVjdCB4PSI2MCIgeT0iNjIiIHdpZHRoPSI2MCIgaGVpZ2h0PSI0NiIgZmlsbD0iI2YyZjJmNyIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz48dGV4dCB4PSI5MCIgeT0iOTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTgiIGZvbnQtd2VpZ2h0PSI2MDAiPjI8L3RleHQ+CiAgPHRleHQgeD0iMTUwIiB5PSI1NCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzAwN2FmZiIgZm9udC13ZWlnaHQ9IjcwMCI+MTwvdGV4dD48cmVjdCB4PSIxMjAiIHk9IjYyIiB3aWR0aD0iNjAiIGhlaWdodD0iNDYiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIyIi8+PHRleHQgeD0iMTUwIiB5PSI5MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxOCIgZm9udC13ZWlnaHQ9IjYwMCI+NDwvdGV4dD4KICA8dGV4dCB4PSIyMTAiIHk9IjU0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmaWxsPSIjMDA3YWZmIiBmb250LXdlaWdodD0iNzAwIj4yPC90ZXh0PjxyZWN0IHg9IjE4MCIgeT0iNjIiIHdpZHRoPSI2MCIgaGVpZ2h0PSI0NiIgZmlsbD0iI2YyZjJmNyIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjIiLz48dGV4dCB4PSIyMTAiIHk9IjkyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE4IiBmb250LXdlaWdodD0iNjAwIj42PC90ZXh0PgogIDx0ZXh0IHg9IjI3MCIgeT0iNTQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiMwMDdhZmYiIGZvbnQtd2VpZ2h0PSI3MDAiPjM8L3RleHQ+PHJlY3QgeD0iMjQwIiB5PSI2MiIgd2lkdGg9IjYwIiBoZWlnaHQ9IjQ2IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMiIvPjx0ZXh0IHg9IjI3MCIgeT0iOTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTgiIGZvbnQtd2VpZ2h0PSI2MDAiPjg8L3RleHQ+CiAgPHRleHQgeD0iMzMwIiB5PSI1NCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZmlsbD0iIzAwN2FmZiIgZm9udC13ZWlnaHQ9IjcwMCI+NDwvdGV4dD48cmVjdCB4PSIzMDAiIHk9IjYyIiB3aWR0aD0iNjAiIGhlaWdodD0iNDYiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIyIi8+PHRleHQgeD0iMzMwIiB5PSI5MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxOCIgZm9udC13ZWlnaHQ9IjYwMCI+MTA8L3RleHQ+CiAgPHRleHQgeD0iMjAiIHk9IjkwIiBmaWxsPSIjNmU2ZTczIiBmb250LXNpemU9IjEyIj5WYWxvcjwvdGV4dD4KICA8ZyBmaWxsPSJub25lIiBzdHJva2U9IiMwMDdhZmYiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI2EpIj48bGluZSB4MT0iOTAiIHkxPSIxNDAiIHgyPSI5MCIgeTI9IjExMiIvPjxsaW5lIHgxPSIzMzAiIHkxPSIxNDAiIHgyPSIzMzAiIHkyPSIxMTIiLz48L2c+CiAgPGcgZm9udC1mYW1pbHk9InVpLW1vbm9zcGFjZSwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2UiIGZvbnQtc2l6ZT0iMTMiIHRleHQtYW5jaG9yPSJtaWRkbGUiPjx0ZXh0IHg9IjkwIiB5PSIxNTYiPm51bWVyb3NbMF0gw6kgMjwvdGV4dD48dGV4dCB4PSIzMzAiIHk9IjE1NiI+bnVtZXJvc1s0XSDDqSAxMDwvdGV4dD48L2c+CiAgPHRleHQgeD0iMjAwIiB5PSIxODIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IiM2ZTZlNzMiPjUgcG9zacOnw7VlcywgY29udGEtc2UgYSBwYXJ0aXIgZGUgMDogbyDDumx0aW1vIMOtbmRpY2Ugw6kgNC48L3RleHQ+Cjwvc3ZnPgo=",bE="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDAgMjkwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0NDAiIGhlaWdodD0iMjkwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHJlY3QgeD0iMTEwIiB5PSIxMiIgd2lkdGg9IjIyMCIgaGVpZ2h0PSI0OCIgcng9IjYiIGZpbGw9IiNkYmVhZmUiIHN0cm9rZT0iIzFkNGVkOCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjIwIiB5PSIzMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1mYW1pbHk9InVpLW1vbm9zcGFjZSwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2UiIGZvbnQtd2VpZ2h0PSI2MDAiPmNhbGN1bGFkb3JhLmNwcDwvdGV4dD4KICA8dGV4dCB4PSIyMjAiIHk9IjUxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIiBmaWxsPSIjM2EzYTNjIj5jw7NkaWdvLWZvbnRlIGVtIEMrKzwvdGV4dD4KICA8ZyBmaWxsPSJub25lIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI2EpIj4KICAgIDxsaW5lIHgxPSIyMjAiIHkxPSI2MCIgeDI9IjgwIiB5Mj0iOTQiLz4KICAgIDxsaW5lIHgxPSI4MCIgeTE9IjEyNiIgeDI9IjgwIiB5Mj0iMTU2Ii8+CiAgICA8bGluZSB4MT0iMjIwIiB5MT0iNjAiIHgyPSIyMjAiIHkyPSI5NCIvPgogICAgPGxpbmUgeDE9IjIyMCIgeTE9IjEyNiIgeDI9IjIyMCIgeTI9IjE1NiIvPgogICAgPGxpbmUgeDE9IjIyMCIgeTE9IjYwIiB4Mj0iMzYwIiB5Mj0iOTQiLz4KICAgIDxsaW5lIHgxPSIzNjAiIHkxPSIxMjYiIHgyPSIzNjAiIHkyPSIxNTYiLz4KICA8L2c+CiAgPHJlY3QgeD0iMTgiIHk9Ijk2IiB3aWR0aD0iMTI0IiBoZWlnaHQ9IjMwIiByeD0iMTUiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KICA8dGV4dCB4PSI4MCIgeT0iMTE2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIj5jb21waWxhZG9yPC90ZXh0PgogIDxyZWN0IHg9IjE4IiB5PSIxNTgiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZmVlMmUyIiBzdHJva2U9IiNiOTFjMWMiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjgwIiB5PSIxODEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSI2MDAiPmPDs2RpZ28gbcOhcXVpbmE8L3RleHQ+CiAgPHJlY3QgeD0iMTgiIHk9IjE5NCIgd2lkdGg9IjEyNCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iODAiIHk9IjIxNyIgdGV4dC1hbmNob3I9Im1pZGRsZSI+V2luZG93czwvdGV4dD4KICA8cmVjdCB4PSIxNTgiIHk9Ijk2IiB3aWR0aD0iMTI0IiBoZWlnaHQ9IjMwIiByeD0iMTUiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KICA8dGV4dCB4PSIyMjAiIHk9IjExNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyI+Y29tcGlsYWRvcjwvdGV4dD4KICA8cmVjdCB4PSIxNTgiIHk9IjE1OCIgd2lkdGg9IjEyNCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNmZWUyZTIiIHN0cm9rZT0iI2I5MWMxYyIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjIwIiB5PSIxODEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSI2MDAiPmPDs2RpZ28gbcOhcXVpbmE8L3RleHQ+CiAgPHJlY3QgeD0iMTU4IiB5PSIxOTQiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiM2ZTZlNzMiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjIyMCIgeT0iMjE3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5tYWNPUzwvdGV4dD4KICA8cmVjdCB4PSIyOTgiIHk9Ijk2IiB3aWR0aD0iMTI0IiBoZWlnaHQ9IjMwIiByeD0iMTUiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KICA8dGV4dCB4PSIzNjAiIHk9IjExNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyI+Y29tcGlsYWRvcjwvdGV4dD4KICA8cmVjdCB4PSIyOTgiIHk9IjE1OCIgd2lkdGg9IjEyNCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNmZWUyZTIiIHN0cm9rZT0iI2I5MWMxYyIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMzYwIiB5PSIxODEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSI2MDAiPmPDs2RpZ28gbcOhcXVpbmE8L3RleHQ+CiAgPHJlY3QgeD0iMjk4IiB5PSIxOTQiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiM2ZTZlNzMiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjM2MCIgeT0iMjE3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5MaW51eDwvdGV4dD4KICA8dGV4dCB4PSIyMjAiIHk9IjI1OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zdHlsZT0iaXRhbGljIj5Db21waWxhciBkZSBub3ZvPC90ZXh0PgogIDx0ZXh0IHg9IjIyMCIgeT0iMjc4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXN0eWxlPSJpdGFsaWMiPnBhcmEgY2FkYSBzaXN0ZW1hPC90ZXh0Pgo8L3N2Zz4K",xE="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NDAgMzMwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KICA8ZGVmcz48bWFya2VyIGlkPSJhIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjMWMxYzFlIi8+PC9tYXJrZXI+PC9kZWZzPgogIDxyZWN0IHdpZHRoPSI0NDAiIGhlaWdodD0iMzMwIiBmaWxsPSIjZmZmZmZmIi8+CiAgPHJlY3QgeD0iMTEwIiB5PSIxMiIgd2lkdGg9IjIyMCIgaGVpZ2h0PSI0OCIgcng9IjYiIGZpbGw9IiNkYmVhZmUiIHN0cm9rZT0iIzFkNGVkOCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMjIwIiB5PSIzMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1mYW1pbHk9InVpLW1vbm9zcGFjZSwgTWVubG8sIENvbnNvbGFzLCBtb25vc3BhY2UiIGZvbnQtd2VpZ2h0PSI2MDAiPlRhYnVhZGEuamF2YTwvdGV4dD4KICA8dGV4dCB4PSIyMjAiIHk9IjUxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIiBmaWxsPSIjM2EzYTNjIj5jw7NkaWdvLWZvbnRlLCBwYXJhIHBlc3NvYXM8L3RleHQ+CiAgPHJlY3QgeD0iMTEwIiB5PSIxMDQiIHdpZHRoPSIyMjAiIGhlaWdodD0iNDgiIHJ4PSI2IiBmaWxsPSIjZmVmM2M3IiBzdHJva2U9IiNiNDUzMDkiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjIyMCIgeT0iMTI0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LWZhbWlseT0idWktbW9ub3NwYWNlLCBNZW5sbywgQ29uc29sYXMsIG1vbm9zcGFjZSIgZm9udC13ZWlnaHQ9IjYwMCI+VGFidWFkYS5jbGFzczwvdGV4dD4KICA8dGV4dCB4PSIyMjAiIHk9IjE0MyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyIgZmlsbD0iIzNhM2EzYyI+Ynl0ZWNvZGU6IENBIEZFIEJBIEJFIOKApjwvdGV4dD4KICA8ZyBmaWxsPSJub25lIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI2EpIj4KICAgIDxsaW5lIHgxPSIyMjAiIHkxPSI2MCIgeDI9IjIyMCIgeTI9IjEwMiIvPgogICAgPGxpbmUgeDE9IjIyMCIgeTE9IjE1MiIgeDI9IjgwIiB5Mj0iMTk2Ii8+CiAgICA8bGluZSB4MT0iMjIwIiB5MT0iMTUyIiB4Mj0iMjIwIiB5Mj0iMTk2Ii8+CiAgICA8bGluZSB4MT0iMjIwIiB5MT0iMTUyIiB4Mj0iMzYwIiB5Mj0iMTk2Ii8+CiAgPC9nPgogIDx0ZXh0IHg9IjIzMCIgeT0iODYiPmNvbXBpbGFkb3IgamF2YWM8L3RleHQ+CiAgPHJlY3QgeD0iMTgiIHk9IjE5OCIgd2lkdGg9IjEyNCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNkY2ZjZTciIHN0cm9rZT0iIzE1ODAzZCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iODAiIHk9IjIyMSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjYwMCI+SlZNPC90ZXh0PgogIDxyZWN0IHg9IjE4IiB5PSIyMzQiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiM2ZTZlNzMiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjgwIiB5PSIyNTciIHRleHQtYW5jaG9yPSJtaWRkbGUiPldpbmRvd3M8L3RleHQ+CiAgPHJlY3QgeD0iMTU4IiB5PSIxOTgiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZGNmY2U3IiBzdHJva2U9IiMxNTgwM2QiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjIyMCIgeT0iMjIxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXdlaWdodD0iNjAwIj5KVk08L3RleHQ+CiAgPHJlY3QgeD0iMTU4IiB5PSIyMzQiIHdpZHRoPSIxMjQiIGhlaWdodD0iMzYiIHJ4PSI2IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiM2ZTZlNzMiIHN0cm9rZS13aWR0aD0iMiIvPgogIDx0ZXh0IHg9IjIyMCIgeT0iMjU3IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj5tYWNPUzwvdGV4dD4KICA8cmVjdCB4PSIyOTgiIHk9IjE5OCIgd2lkdGg9IjEyNCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNkY2ZjZTciIHN0cm9rZT0iIzE1ODAzZCIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMzYwIiB5PSIyMjEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtd2VpZ2h0PSI2MDAiPkpWTTwvdGV4dD4KICA8cmVjdCB4PSIyOTgiIHk9IjIzNCIgd2lkdGg9IjEyNCIgaGVpZ2h0PSIzNiIgcng9IjYiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzZlNmU3MyIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgPHRleHQgeD0iMzYwIiB5PSIyNTciIHRleHQtYW5jaG9yPSJtaWRkbGUiPkxpbnV4PC90ZXh0PgogIDx0ZXh0IHg9IjIyMCIgeT0iMjk4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXN0eWxlPSJpdGFsaWMiPkVzY3JldmVyIHVtYSB2ZXosPC90ZXh0PgogIDx0ZXh0IHg9IjIyMCIgeT0iMzE4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXN0eWxlPSJpdGFsaWMiPmV4ZWN1dGFyIGVtIHF1YWxxdWVyIGxhZG88L3RleHQ+Cjwvc3ZnPgo=",vE=""+new URL("mvc-klick-DKonBpbs.svg",import.meta.url).href,yE=""+new URL("schiffe-versenken-iEBDHIxD.svg",import.meta.url).href,wE=""+new URL("ss-binaere-suche-DVVS2SNc.svg",import.meta.url).href,zE=""+new URL("ss-bubblesort-AFDcFDah.svg",import.meta.url).href,IE="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDQgMTk2IiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmaWxsPSIjMWMxYzFlIj4KPHJlY3Qgd2lkdGg9IjQwNCIgaGVpZ2h0PSIxOTYiIGZpbGw9IiNmZmZmZmYiLz4KPHRleHQgeD0iMTQiIHk9IjI0IiBmb250LXdlaWdodD0iNjAwIiBmb250LXNpemU9IjE1Ij5Qcm9jdXJhLXNlIG8gOS4gQXMgY2FydGFzIGVzdMOjbyBiYXJhbGhhZGFzLjwvdGV4dD4KPGc+PHJlY3QgeD0iMTQiIHk9IjUwIiB3aWR0aD0iNDAiIGhlaWdodD0iNTYiIHJ4PSI1IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMSIvPjx0ZXh0IHg9IjM0LjAiIHk9Ijc1LjIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTgiIGZvbnQtd2VpZ2h0PSI3MDAiIGZpbGw9IiNkYzI2MjYiPjc8L3RleHQ+PHRleHQgeD0iMzQuMCIgeT0iOTUuOTE5OTk5OTk5OTk5OTkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTUiIGZpbGw9IiNkYzI2MjYiPuKZpTwvdGV4dD48L2c+Cjx0ZXh0IHg9IjM0LjAiIHk9IjEzMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxNiIgZm9udC13ZWlnaHQ9IjYwMCIgZmlsbD0iI2RjMjYyNiI+4pyXPC90ZXh0Pgo8dGV4dCB4PSIzNC4wIiB5PSIxNDgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiM2ZTZlNzMiPjEuPC90ZXh0Pgo8Zz48cmVjdCB4PSI2MiIgeT0iNTAiIHdpZHRoPSI0MCIgaGVpZ2h0PSI1NiIgcng9IjUiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIxIi8+PHRleHQgeD0iODIuMCIgeT0iNzUuMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxOCIgZm9udC13ZWlnaHQ9IjcwMCIgZmlsbD0iIzFjMWMxZSI+MzwvdGV4dD48dGV4dCB4PSI4Mi4wIiB5PSI5NS45MTk5OTk5OTk5OTk5OSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxNSIgZmlsbD0iIzFjMWMxZSI+4pmgPC90ZXh0PjwvZz4KPHRleHQgeD0iODIuMCIgeT0iMTMwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE2IiBmb250LXdlaWdodD0iNjAwIiBmaWxsPSIjZGMyNjI2Ij7inJc8L3RleHQ+Cjx0ZXh0IHg9IjgyLjAiIHk9IjE0OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyIgZmlsbD0iIzZlNmU3MyI+Mi48L3RleHQ+CjxnPjxyZWN0IHg9IjExMCIgeT0iNTAiIHdpZHRoPSI0MCIgaGVpZ2h0PSI1NiIgcng9IjUiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIxIi8+PHRleHQgeD0iMTMwLjAiIHk9Ijc1LjIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTgiIGZvbnQtd2VpZ2h0PSI3MDAiIGZpbGw9IiNkYzI2MjYiPjEwPC90ZXh0Pjx0ZXh0IHg9IjEzMC4wIiB5PSI5NS45MTk5OTk5OTk5OTk5OSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxNSIgZmlsbD0iI2RjMjYyNiI+4pmmPC90ZXh0PjwvZz4KPHRleHQgeD0iMTMwLjAiIHk9IjEzMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxNiIgZm9udC13ZWlnaHQ9IjYwMCIgZmlsbD0iI2RjMjYyNiI+4pyXPC90ZXh0Pgo8dGV4dCB4PSIxMzAuMCIgeT0iMTQ4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIiBmaWxsPSIjNmU2ZTczIj4zLjwvdGV4dD4KPGc+PHJlY3QgeD0iMTU4IiB5PSI1MCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjU2IiByeD0iNSIgZmlsbD0iI2YyZjJmNyIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjEiLz48dGV4dCB4PSIxNzguMCIgeT0iNzUuMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxOCIgZm9udC13ZWlnaHQ9IjcwMCIgZmlsbD0iIzFjMWMxZSI+NTwvdGV4dD48dGV4dCB4PSIxNzguMCIgeT0iOTUuOTE5OTk5OTk5OTk5OTkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTUiIGZpbGw9IiMxYzFjMWUiPuKZozwvdGV4dD48L2c+Cjx0ZXh0IHg9IjE3OC4wIiB5PSIxMzAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTYiIGZvbnQtd2VpZ2h0PSI2MDAiIGZpbGw9IiNkYzI2MjYiPuKclzwvdGV4dD4KPHRleHQgeD0iMTc4LjAiIHk9IjE0OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyIgZmlsbD0iIzZlNmU3MyI+NC48L3RleHQ+CjxnPjxyZWN0IHg9IjIwNiIgeT0iNTAiIHdpZHRoPSI0MCIgaGVpZ2h0PSI1NiIgcng9IjUiIGZpbGw9IiNkY2ZjZTciIHN0cm9rZT0iIzE1ODAzZCIgc3Ryb2tlLXdpZHRoPSIzIi8+PHRleHQgeD0iMjI2LjAiIHk9Ijc1LjIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTgiIGZvbnQtd2VpZ2h0PSI3MDAiIGZpbGw9IiMxYzFjMWUiPjk8L3RleHQ+PHRleHQgeD0iMjI2LjAiIHk9Ijk1LjkxOTk5OTk5OTk5OTk5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE1IiBmaWxsPSIjMWMxYzFlIj7imaA8L3RleHQ+PC9nPgo8dGV4dCB4PSIyMjYuMCIgeT0iMTMwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE2IiBmb250LXdlaWdodD0iNjAwIiBmaWxsPSIjMTU4MDNkIj7inJM8L3RleHQ+Cjx0ZXh0IHg9IjIyNi4wIiB5PSIxNDgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiM2ZTZlNzMiPjUuPC90ZXh0Pgo8Zz48cmVjdCB4PSIyNTQiIHk9IjUwIiB3aWR0aD0iNDAiIGhlaWdodD0iNTYiIHJ4PSI1IiBmaWxsPSIjMWQ0ZWQ4IiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMSIvPjxyZWN0IHg9IjI1OCIgeT0iNTQiIHdpZHRoPSIzMiIgaGVpZ2h0PSI0OCIgcng9IjMiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzkzYzVmZCIgc3Ryb2tlLXdpZHRoPSIxLjIiIHN0cm9rZS1kYXNoYXJyYXk9IjMgMiIvPjwvZz4KPGc+PHJlY3QgeD0iMzAyIiB5PSI1MCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjU2IiByeD0iNSIgZmlsbD0iIzFkNGVkOCIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjEiLz48cmVjdCB4PSIzMDYiIHk9IjU0IiB3aWR0aD0iMzIiIGhlaWdodD0iNDgiIHJ4PSIzIiBmaWxsPSJub25lIiBzdHJva2U9IiM5M2M1ZmQiIHN0cm9rZS13aWR0aD0iMS4yIiBzdHJva2UtZGFzaGFycmF5PSIzIDIiLz48L2c+CjxnPjxyZWN0IHg9IjM1MCIgeT0iNTAiIHdpZHRoPSI0MCIgaGVpZ2h0PSI1NiIgcng9IjUiIGZpbGw9IiMxZDRlZDgiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIxIi8+PHJlY3QgeD0iMzU0IiB5PSI1NCIgd2lkdGg9IjMyIiBoZWlnaHQ9IjQ4IiByeD0iMyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjOTNjNWZkIiBzdHJva2Utd2lkdGg9IjEuMiIgc3Ryb2tlLWRhc2hhcnJheT0iMyAyIi8+PC9nPgo8dGV4dCB4PSIxNCIgeT0iMTY4IiBmb250LXNpemU9IjE1IiBmaWxsPSIjNmU2ZTczIj5WaXJhciBkYSBlc3F1ZXJkYSBwYXJhIGEgZGlyZWl0YTo8L3RleHQ+PHRleHQgeD0iMTQiIHk9IjE4OCIgZm9udC1zaXplPSIxNSIgZmlsbD0iIzZlNmU3MyI+QXDDs3MgNSBjb21wYXJhw6fDtWVzLCBvIDkgw6kgZW5jb250cmFkby48L3RleHQ+Cjwvc3ZnPgo=",kE=""+new URL("ss-vergleiche-DWgkIvLr.svg",import.meta.url).href,SE="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MjAgNDUwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KPGRlZnM+PG1hcmtlciBpZD0iayIgdmlld0JveD0iMCAwIDEwIDEwIiByZWZYPSI5IiByZWZZPSI1IiBtYXJrZXJXaWR0aD0iNiIgbWFya2VySGVpZ2h0PSI2IiBvcmllbnQ9ImF1dG8iPjxwYXRoIGQ9Ik0wIDAgTDEwIDUgTDAgMTAgWiIgZmlsbD0iIzFjMWMxZSIvPjwvbWFya2VyPjxtYXJrZXIgaWQ9ImIiIHZpZXdCb3g9IjAgMCAxMCAxMCIgcmVmWD0iOSIgcmVmWT0iNSIgbWFya2VyV2lkdGg9IjYiIG1hcmtlckhlaWdodD0iNiIgb3JpZW50PSJhdXRvIj48cGF0aCBkPSJNMCAwIEwxMCA1IEwwIDEwIFoiIGZpbGw9IiMxZDRlZDgiLz48L21hcmtlcj48bWFya2VyIGlkPSJvIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2IiBtYXJrZXJIZWlnaHQ9IjYiIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjYjQ1MzA5Ii8+PC9tYXJrZXI+PC9kZWZzPgo8cmVjdCB3aWR0aD0iNDIwIiBoZWlnaHQ9IjQ1MCIgZmlsbD0iI2ZmZmZmZiIvPgo8dGV4dCB4PSIxMCIgeT0iMjIiIGZvbnQtc2l6ZT0iMTUiIGZvbnQtd2VpZ2h0PSI3MDAiPlBhc3NhZ2VtIHBvciB2YWxvcjogdW1hIGPDs3BpYTwvdGV4dD4KPHJlY3QgeD0iMTAiIHk9IjM4IiB3aWR0aD0iMTYwIiBoZWlnaHQ9Ijg2IiByeD0iOCIgZmlsbD0iI2VmZjZmZiIgc3Ryb2tlPSIjMWQ0ZWQ4IiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSIyMCIgeT0iNTgiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiMxZDRlZDgiPlByb2dyYW1hIHByaW5jaXBhbDwvdGV4dD4KPHRleHQgeD0iMTYiIHk9Ijk4IiBmb250LXNpemU9IjEyIj5udW1lcm88L3RleHQ+CjxyZWN0IHg9IjcwIiB5PSI3OCIgd2lkdGg9IjU2IiBoZWlnaHQ9IjMwIiByeD0iNCIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMWMxYzFlIi8+Cjx0ZXh0IHg9Ijk4IiB5PSI5OSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjcwMCI+NTwvdGV4dD4KPHJlY3QgeD0iMjUwIiB5PSIzOCIgd2lkdGg9IjE2MCIgaGVpZ2h0PSI4NiIgcng9IjgiIGZpbGw9IiNmZmY3ZWQiIHN0cm9rZT0iI2I0NTMwOSIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iMjYwIiB5PSI1OCIgZm9udC1zaXplPSIxMyIgZmlsbD0iI2I0NTMwOSI+ZHVwbGljYXI8L3RleHQ+Cjx0ZXh0IHg9IjI2MCIgeT0iOTgiPng8L3RleHQ+CjxyZWN0IHg9IjI4MCIgeT0iNzgiIHdpZHRoPSI4MCIgaGVpZ2h0PSIzMCIgcng9IjQiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzFjMWMxZSIvPgo8dGV4dCB4PSIzMjAiIHk9Ijk5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj48dHNwYW4gZmlsbD0iIzZlNmU3MyIgdGV4dC1kZWNvcmF0aW9uPSJsaW5lLXRocm91Z2giPjU8L3RzcGFuPiA8dHNwYW4gZm9udC13ZWlnaHQ9IjcwMCI+MTA8L3RzcGFuPjwvdGV4dD4KPGxpbmUgeDE9IjEyOCIgeTE9IjkzIiB4Mj0iMjQ4IiB5Mj0iOTMiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1kYXNoYXJyYXk9IjUgNCIgbWFya2VyLWVuZD0idXJsKCNrKSIvPgo8dGV4dCB4PSIyMTAiIHk9Ijg0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIj5jw7NwaWE8L3RleHQ+Cjx0ZXh0IHg9IjEwIiB5PSIxNTAiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiM2ZTZlNzMiPnggcGFzc2EgYSAxMCwgbWFzIG51bWVybyBmaWNhIDUuPC90ZXh0Pgo8dGV4dCB4PSIxMCIgeT0iMTY4IiBmb250LXNpemU9IjEzIiBmaWxsPSIjNmU2ZTczIj5Db21vIHVtYSBmb3RvY8OzcGlhOiBlc2NyZXZlciBuYSBjw7NwaWE8L3RleHQ+Cjx0ZXh0IHg9IjEwIiB5PSIxODYiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiM2ZTZlNzMiPm7Do28gYWx0ZXJhIG8gb3JpZ2luYWwuPC90ZXh0Pgo8bGluZSB4MT0iMTAiIHkxPSIyMDgiIHgyPSI0MTAiIHkyPSIyMDgiIHN0cm9rZT0iI2QxZDFkNiIvPgo8dGV4dCB4PSIxMCIgeT0iMjM2IiBmb250LXNpemU9IjE1IiBmb250LXdlaWdodD0iNzAwIj5QYXNzYWdlbSBwb3IgcmVmZXLDqm5jaWE6IG8gbWVzbW8gYXJyYXk8L3RleHQ+CjxyZWN0IHg9IjEwIiB5PSIyNTIiIHdpZHRoPSIxNjAiIGhlaWdodD0iNjIiIHJ4PSI4IiBmaWxsPSIjZWZmNmZmIiBzdHJva2U9IiMxZDRlZDgiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjIwIiB5PSIyNzIiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiMxZDRlZDgiPlByb2dyYW1hIHByaW5jaXBhbDwvdGV4dD4KPHRleHQgeD0iMjAiIHk9IjMwMCI+ZmlsYTwvdGV4dD4KPGNpcmNsZSBjeD0iMTUwIiBjeT0iMjk1IiByPSI1IiBmaWxsPSIjMWQ0ZWQ4Ii8+CjxyZWN0IHg9IjI1MCIgeT0iMjUyIiB3aWR0aD0iMTYwIiBoZWlnaHQ9IjYyIiByeD0iOCIgZmlsbD0iI2ZmZjdlZCIgc3Ryb2tlPSIjYjQ1MzA5IiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSIyNjAiIHk9IjI3MiIgZm9udC1zaXplPSIxMyIgZmlsbD0iI2I0NTMwOSI+bGltcGFyPC90ZXh0Pgo8dGV4dCB4PSIyNjAiIHk9IjMwMCI+bHVnYXJlczwvdGV4dD4KPGNpcmNsZSBjeD0iMzkwIiBjeT0iMjk1IiByPSI1IiBmaWxsPSIjYjQ1MzA5Ii8+CjxwYXRoIGQ9Ik0xNTAgMzAwIEwxNTAgMzQwIEwxNDAgMzUyIiBmaWxsPSJub25lIiBzdHJva2U9IiMxZDRlZDgiIHN0cm9rZS13aWR0aD0iMS41IiBtYXJrZXItZW5kPSJ1cmwoI2IpIi8+CjxwYXRoIGQ9Ik0zOTAgMzAwIEwzOTAgMzQwIEwzMjIgMzU0IiBmaWxsPSJub25lIiBzdHJva2U9IiNiNDUzMDkiIHN0cm9rZS13aWR0aD0iMS41IiBtYXJrZXItZW5kPSJ1cmwoI28pIi8+CjxyZWN0IHg9IjkwIiB5PSIzNTgiIHdpZHRoPSI2MCIgaGVpZ2h0PSIzMiIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMWMxYzFlIi8+CjxyZWN0IHg9IjE1MCIgeT0iMzU4IiB3aWR0aD0iNjAiIGhlaWdodD0iMzIiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzFjMWMxZSIvPgo8cmVjdCB4PSIyMTAiIHk9IjM1OCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjMyIiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMxYzFjMWUiLz4KPHJlY3QgeD0iMjcwIiB5PSIzNTgiIHdpZHRoPSI2MCIgaGVpZ2h0PSIzMiIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMWMxYzFlIi8+Cjx0ZXh0IHg9IjEyMCIgeT0iMzc5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIj5mYWxzZTwvdGV4dD4KPHRleHQgeD0iMTgwIiB5PSIzNzkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTMiPmZhbHNlPC90ZXh0Pgo8dGV4dCB4PSIyNDAiIHk9IjM3OSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyI+ZmFsc2U8L3RleHQ+Cjx0ZXh0IHg9IjMwMCIgeT0iMzc5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIj5mYWxzZTwvdGV4dD4KPHRleHQgeD0iMTAiIHk9IjQxNiIgZm9udC1zaXplPSIxMyIgZmlsbD0iIzZlNmU3MyI+U8OzIGjDoSB1bSBhcnJheS4gTyBxdWUgbGltcGFyIGFsdGVyYSBhdHJhdsOpcyBkZSBsdWdhcmVzLDwvdGV4dD4KPHRleHQgeD0iMTAiIHk9IjQzNCIgZm9udC1zaXplPSIxMyIgZmlsbD0iIzZlNmU3MyI+byBwcm9ncmFtYSBwcmluY2lwYWwgdsOqIGVtIGZpbGEuPC90ZXh0Pgo8L3N2Zz4K",TE=""+new URL("zk-zeichen-8efNmpGx.svg",import.meta.url).href,_E=""+new URL("schiffe-versenken-CXt1SF0S.svg",import.meta.url).href,jE=""+new URL("ss-binaere-suche-CPsLGldq.svg",import.meta.url).href,AE=""+new URL("ss-bubblesort-Dic2ZfaT.svg",import.meta.url).href,CE="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDQgMTk2IiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjEzIiBmaWxsPSIjMWMxYzFlIj4KPHJlY3Qgd2lkdGg9IjQwNCIgaGVpZ2h0PSIxOTYiIGZpbGw9IiNmZmZmZmYiLz4KPHRleHQgeD0iMTQiIHk9IjI0IiBmb250LXdlaWdodD0iNjAwIiBmb250LXNpemU9IjE1Ij5HZXN1Y2h0OiBkaWUgOS4gRGllIEthcnRlbiBzaW5kIGdlbWlzY2h0LjwvdGV4dD4KPGc+PHJlY3QgeD0iMTQiIHk9IjUwIiB3aWR0aD0iNDAiIGhlaWdodD0iNTYiIHJ4PSI1IiBmaWxsPSIjZjJmMmY3IiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMSIvPjx0ZXh0IHg9IjM0LjAiIHk9Ijc1LjIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTgiIGZvbnQtd2VpZ2h0PSI3MDAiIGZpbGw9IiNkYzI2MjYiPjc8L3RleHQ+PHRleHQgeD0iMzQuMCIgeT0iOTUuOTE5OTk5OTk5OTk5OTkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTUiIGZpbGw9IiNkYzI2MjYiPuKZpTwvdGV4dD48L2c+Cjx0ZXh0IHg9IjM0LjAiIHk9IjEzMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxNiIgZm9udC13ZWlnaHQ9IjYwMCIgZmlsbD0iI2RjMjYyNiI+4pyXPC90ZXh0Pgo8dGV4dCB4PSIzNC4wIiB5PSIxNDgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiM2ZTZlNzMiPjEuPC90ZXh0Pgo8Zz48cmVjdCB4PSI2MiIgeT0iNTAiIHdpZHRoPSI0MCIgaGVpZ2h0PSI1NiIgcng9IjUiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIxIi8+PHRleHQgeD0iODIuMCIgeT0iNzUuMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxOCIgZm9udC13ZWlnaHQ9IjcwMCIgZmlsbD0iIzFjMWMxZSI+MzwvdGV4dD48dGV4dCB4PSI4Mi4wIiB5PSI5NS45MTk5OTk5OTk5OTk5OSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxNSIgZmlsbD0iIzFjMWMxZSI+4pmgPC90ZXh0PjwvZz4KPHRleHQgeD0iODIuMCIgeT0iMTMwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE2IiBmb250LXdlaWdodD0iNjAwIiBmaWxsPSIjZGMyNjI2Ij7inJc8L3RleHQ+Cjx0ZXh0IHg9IjgyLjAiIHk9IjE0OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyIgZmlsbD0iIzZlNmU3MyI+Mi48L3RleHQ+CjxnPjxyZWN0IHg9IjExMCIgeT0iNTAiIHdpZHRoPSI0MCIgaGVpZ2h0PSI1NiIgcng9IjUiIGZpbGw9IiNmMmYyZjciIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIxIi8+PHRleHQgeD0iMTMwLjAiIHk9Ijc1LjIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTgiIGZvbnQtd2VpZ2h0PSI3MDAiIGZpbGw9IiNkYzI2MjYiPjEwPC90ZXh0Pjx0ZXh0IHg9IjEzMC4wIiB5PSI5NS45MTk5OTk5OTk5OTk5OSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxNSIgZmlsbD0iI2RjMjYyNiI+4pmmPC90ZXh0PjwvZz4KPHRleHQgeD0iMTMwLjAiIHk9IjEzMCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxNiIgZm9udC13ZWlnaHQ9IjYwMCIgZmlsbD0iI2RjMjYyNiI+4pyXPC90ZXh0Pgo8dGV4dCB4PSIxMzAuMCIgeT0iMTQ4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIiBmaWxsPSIjNmU2ZTczIj4zLjwvdGV4dD4KPGc+PHJlY3QgeD0iMTU4IiB5PSI1MCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjU2IiByeD0iNSIgZmlsbD0iI2YyZjJmNyIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjEiLz48dGV4dCB4PSIxNzguMCIgeT0iNzUuMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxOCIgZm9udC13ZWlnaHQ9IjcwMCIgZmlsbD0iIzFjMWMxZSI+NTwvdGV4dD48dGV4dCB4PSIxNzguMCIgeT0iOTUuOTE5OTk5OTk5OTk5OTkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTUiIGZpbGw9IiMxYzFjMWUiPuKZozwvdGV4dD48L2c+Cjx0ZXh0IHg9IjE3OC4wIiB5PSIxMzAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTYiIGZvbnQtd2VpZ2h0PSI2MDAiIGZpbGw9IiNkYzI2MjYiPuKclzwvdGV4dD4KPHRleHQgeD0iMTc4LjAiIHk9IjE0OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyIgZmlsbD0iIzZlNmU3MyI+NC48L3RleHQ+CjxnPjxyZWN0IHg9IjIwNiIgeT0iNTAiIHdpZHRoPSI0MCIgaGVpZ2h0PSI1NiIgcng9IjUiIGZpbGw9IiNkY2ZjZTciIHN0cm9rZT0iIzE1ODAzZCIgc3Ryb2tlLXdpZHRoPSIzIi8+PHRleHQgeD0iMjI2LjAiIHk9Ijc1LjIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTgiIGZvbnQtd2VpZ2h0PSI3MDAiIGZpbGw9IiMxYzFjMWUiPjk8L3RleHQ+PHRleHQgeD0iMjI2LjAiIHk9Ijk1LjkxOTk5OTk5OTk5OTk5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE1IiBmaWxsPSIjMWMxYzFlIj7imaA8L3RleHQ+PC9nPgo8dGV4dCB4PSIyMjYuMCIgeT0iMTMwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjE2IiBmb250LXdlaWdodD0iNjAwIiBmaWxsPSIjMTU4MDNkIj7inJM8L3RleHQ+Cjx0ZXh0IHg9IjIyNi4wIiB5PSIxNDgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiM2ZTZlNzMiPjUuPC90ZXh0Pgo8Zz48cmVjdCB4PSIyNTQiIHk9IjUwIiB3aWR0aD0iNDAiIGhlaWdodD0iNTYiIHJ4PSI1IiBmaWxsPSIjMWQ0ZWQ4IiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMSIvPjxyZWN0IHg9IjI1OCIgeT0iNTQiIHdpZHRoPSIzMiIgaGVpZ2h0PSI0OCIgcng9IjMiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzkzYzVmZCIgc3Ryb2tlLXdpZHRoPSIxLjIiIHN0cm9rZS1kYXNoYXJyYXk9IjMgMiIvPjwvZz4KPGc+PHJlY3QgeD0iMzAyIiB5PSI1MCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjU2IiByeD0iNSIgZmlsbD0iIzFkNGVkOCIgc3Ryb2tlPSIjMWMxYzFlIiBzdHJva2Utd2lkdGg9IjEiLz48cmVjdCB4PSIzMDYiIHk9IjU0IiB3aWR0aD0iMzIiIGhlaWdodD0iNDgiIHJ4PSIzIiBmaWxsPSJub25lIiBzdHJva2U9IiM5M2M1ZmQiIHN0cm9rZS13aWR0aD0iMS4yIiBzdHJva2UtZGFzaGFycmF5PSIzIDIiLz48L2c+CjxnPjxyZWN0IHg9IjM1MCIgeT0iNTAiIHdpZHRoPSI0MCIgaGVpZ2h0PSI1NiIgcng9IjUiIGZpbGw9IiMxZDRlZDgiIHN0cm9rZT0iIzFjMWMxZSIgc3Ryb2tlLXdpZHRoPSIxIi8+PHJlY3QgeD0iMzU0IiB5PSI1NCIgd2lkdGg9IjMyIiBoZWlnaHQ9IjQ4IiByeD0iMyIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjOTNjNWZkIiBzdHJva2Utd2lkdGg9IjEuMiIgc3Ryb2tlLWRhc2hhcnJheT0iMyAyIi8+PC9nPgo8dGV4dCB4PSIxNCIgeT0iMTY4IiBmb250LXNpemU9IjE1IiBmaWxsPSIjNmU2ZTczIj5Wb24gbGlua3MgbmFjaCByZWNodHMgdW1kcmVoZW46PC90ZXh0Pjx0ZXh0IHg9IjE0IiB5PSIxODgiIGZvbnQtc2l6ZT0iMTUiIGZpbGw9IiM2ZTZlNzMiPk5hY2ggNSBWZXJnbGVpY2hlbiBpc3QgZGllIDkgZ2VmdW5kZW4uPC90ZXh0Pgo8L3N2Zz4K",DE=""+new URL("ss-vergleiche-DRqzU2TZ.svg",import.meta.url).href,PE="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MjAgNDUwIiBmb250LWZhbWlseT0ic3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBTZWdvZSBVSSwgUm9ib3RvLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjE0IiBmaWxsPSIjMWMxYzFlIj4KPGRlZnM+PG1hcmtlciBpZD0iayIgdmlld0JveD0iMCAwIDEwIDEwIiByZWZYPSI5IiByZWZZPSI1IiBtYXJrZXJXaWR0aD0iNiIgbWFya2VySGVpZ2h0PSI2IiBvcmllbnQ9ImF1dG8iPjxwYXRoIGQ9Ik0wIDAgTDEwIDUgTDAgMTAgWiIgZmlsbD0iIzFjMWMxZSIvPjwvbWFya2VyPjxtYXJrZXIgaWQ9ImIiIHZpZXdCb3g9IjAgMCAxMCAxMCIgcmVmWD0iOSIgcmVmWT0iNSIgbWFya2VyV2lkdGg9IjYiIG1hcmtlckhlaWdodD0iNiIgb3JpZW50PSJhdXRvIj48cGF0aCBkPSJNMCAwIEwxMCA1IEwwIDEwIFoiIGZpbGw9IiMxZDRlZDgiLz48L21hcmtlcj48bWFya2VyIGlkPSJvIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjkiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2IiBtYXJrZXJIZWlnaHQ9IjYiIG9yaWVudD0iYXV0byI+PHBhdGggZD0iTTAgMCBMMTAgNSBMMCAxMCBaIiBmaWxsPSIjYjQ1MzA5Ii8+PC9tYXJrZXI+PC9kZWZzPgo8cmVjdCB3aWR0aD0iNDIwIiBoZWlnaHQ9IjQ1MCIgZmlsbD0iI2ZmZmZmZiIvPgo8dGV4dCB4PSIxMCIgeT0iMjIiIGZvbnQtc2l6ZT0iMTUiIGZvbnQtd2VpZ2h0PSI3MDAiPldlcnTDvGJlcmdhYmU6IGVpbmUgS29waWU8L3RleHQ+CjxyZWN0IHg9IjEwIiB5PSIzOCIgd2lkdGg9IjE2MCIgaGVpZ2h0PSI4NiIgcng9IjgiIGZpbGw9IiNlZmY2ZmYiIHN0cm9rZT0iIzFkNGVkOCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iMjAiIHk9IjU4IiBmb250LXNpemU9IjEzIiBmaWxsPSIjMWQ0ZWQ4Ij5IYXVwdHByb2dyYW1tPC90ZXh0Pgo8dGV4dCB4PSIyMCIgeT0iOTgiPnphaGw8L3RleHQ+CjxyZWN0IHg9IjcwIiB5PSI3OCIgd2lkdGg9IjU2IiBoZWlnaHQ9IjMwIiByeD0iNCIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMWMxYzFlIi8+Cjx0ZXh0IHg9Ijk4IiB5PSI5OSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC13ZWlnaHQ9IjcwMCI+NTwvdGV4dD4KPHJlY3QgeD0iMjUwIiB5PSIzOCIgd2lkdGg9IjE2MCIgaGVpZ2h0PSI4NiIgcng9IjgiIGZpbGw9IiNmZmY3ZWQiIHN0cm9rZT0iI2I0NTMwOSIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iMjYwIiB5PSI1OCIgZm9udC1zaXplPSIxMyIgZmlsbD0iI2I0NTMwOSI+dmVyZG9wcGxlPC90ZXh0Pgo8dGV4dCB4PSIyNjAiIHk9Ijk4Ij54PC90ZXh0Pgo8cmVjdCB4PSIyODAiIHk9Ijc4IiB3aWR0aD0iODAiIGhlaWdodD0iMzAiIHJ4PSI0IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMxYzFjMWUiLz4KPHRleHQgeD0iMzIwIiB5PSI5OSIgdGV4dC1hbmNob3I9Im1pZGRsZSI+PHRzcGFuIGZpbGw9IiM2ZTZlNzMiIHRleHQtZGVjb3JhdGlvbj0ibGluZS10aHJvdWdoIj41PC90c3Bhbj4gPHRzcGFuIGZvbnQtd2VpZ2h0PSI3MDAiPjEwPC90c3Bhbj48L3RleHQ+CjxsaW5lIHgxPSIxMjgiIHkxPSI5MyIgeDI9IjI0OCIgeTI9IjkzIiBzdHJva2U9IiMxYzFjMWUiIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtZGFzaGFycmF5PSI1IDQiIG1hcmtlci1lbmQ9InVybCgjaykiLz4KPHRleHQgeD0iMjEwIiB5PSI4NCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyI+S29waWU8L3RleHQ+Cjx0ZXh0IHg9IjEwIiB5PSIxNTAiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiM2ZTZlNzMiPnggd2lyZCAxMCwgYWJlciB6YWhsIGJsZWlidCA1LjwvdGV4dD4KPHRleHQgeD0iMTAiIHk9IjE2OCIgZm9udC1zaXplPSIxMyIgZmlsbD0iIzZlNmU3MyI+V2llIGJlaSBlaW5lciBGb3Rva29waWU6IFdlciBhdWYgZGVyIEtvcGllIHNjaHJlaWJ0LDwvdGV4dD4KPHRleHQgeD0iMTAiIHk9IjE4NiIgZm9udC1zaXplPSIxMyIgZmlsbD0iIzZlNmU3MyI+w6RuZGVydCBkYXMgT3JpZ2luYWwgbmljaHQuPC90ZXh0Pgo8bGluZSB4MT0iMTAiIHkxPSIyMDgiIHgyPSI0MTAiIHkyPSIyMDgiIHN0cm9rZT0iI2QxZDFkNiIvPgo8dGV4dCB4PSIxMCIgeT0iMjM2IiBmb250LXNpemU9IjE1IiBmb250LXdlaWdodD0iNzAwIj5SZWZlcmVuesO8YmVyZ2FiZTogZGFzc2VsYmUgQXJyYXk8L3RleHQ+CjxyZWN0IHg9IjEwIiB5PSIyNTIiIHdpZHRoPSIxNjAiIGhlaWdodD0iNjIiIHJ4PSI4IiBmaWxsPSIjZWZmNmZmIiBzdHJva2U9IiMxZDRlZDgiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjIwIiB5PSIyNzIiIGZvbnQtc2l6ZT0iMTMiIGZpbGw9IiMxZDRlZDgiPkhhdXB0cHJvZ3JhbW08L3RleHQ+Cjx0ZXh0IHg9IjIwIiB5PSIzMDAiPnJlaWhlPC90ZXh0Pgo8Y2lyY2xlIGN4PSIxNTAiIGN5PSIyOTUiIHI9IjUiIGZpbGw9IiMxZDRlZDgiLz4KPHJlY3QgeD0iMjUwIiB5PSIyNTIiIHdpZHRoPSIxNjAiIGhlaWdodD0iNjIiIHJ4PSI4IiBmaWxsPSIjZmZmN2VkIiBzdHJva2U9IiNiNDUzMDkiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjI2MCIgeT0iMjcyIiBmb250LXNpemU9IjEzIiBmaWxsPSIjYjQ1MzA5Ij5sZWVyZW48L3RleHQ+Cjx0ZXh0IHg9IjI2MCIgeT0iMzAwIj5wbGFldHplPC90ZXh0Pgo8Y2lyY2xlIGN4PSIzOTAiIGN5PSIyOTUiIHI9IjUiIGZpbGw9IiNiNDUzMDkiLz4KPHBhdGggZD0iTTE1MCAzMDAgTDE1MCAzNDAgTDE0MCAzNTIiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzFkNGVkOCIgc3Ryb2tlLXdpZHRoPSIxLjUiIG1hcmtlci1lbmQ9InVybCgjYikiLz4KPHBhdGggZD0iTTM5MCAzMDAgTDM5MCAzNDAgTDMyMiAzNTQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2I0NTMwOSIgc3Ryb2tlLXdpZHRoPSIxLjUiIG1hcmtlci1lbmQ9InVybCgjbykiLz4KPHJlY3QgeD0iOTAiIHk9IjM1OCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjMyIiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMxYzFjMWUiLz4KPHJlY3QgeD0iMTUwIiB5PSIzNTgiIHdpZHRoPSI2MCIgaGVpZ2h0PSIzMiIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSIjMWMxYzFlIi8+CjxyZWN0IHg9IjIxMCIgeT0iMzU4IiB3aWR0aD0iNjAiIGhlaWdodD0iMzIiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0iIzFjMWMxZSIvPgo8cmVjdCB4PSIyNzAiIHk9IjM1OCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjMyIiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiMxYzFjMWUiLz4KPHRleHQgeD0iMTIwIiB5PSIzNzkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTMiPmZhbHNlPC90ZXh0Pgo8dGV4dCB4PSIxODAiIHk9IjM3OSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgZm9udC1zaXplPSIxMyI+ZmFsc2U8L3RleHQ+Cjx0ZXh0IHg9IjI0MCIgeT0iMzc5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBmb250LXNpemU9IjEzIj5mYWxzZTwvdGV4dD4KPHRleHQgeD0iMzAwIiB5PSIzNzkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtc2l6ZT0iMTMiPmZhbHNlPC90ZXh0Pgo8dGV4dCB4PSIxMCIgeT0iNDE2IiBmb250LXNpemU9IjEzIiBmaWxsPSIjNmU2ZTczIj5FcyBnaWJ0IG51ciBlaW4gQXJyYXkuIFdhcyBsZWVyZW4gw7xiZXIgcGxhZXR6ZSDDpG5kZXJ0LDwvdGV4dD4KPHRleHQgeD0iMTAiIHk9IjQzNCIgZm9udC1zaXplPSIxMyIgZmlsbD0iIzZlNmU3MyI+c2llaHQgZGFzIEhhdXB0cHJvZ3JhbW0gdW50ZXIgcmVpaGUuPC90ZXh0Pgo8L3N2Zz4K",BE=""+new URL("zk-zeichen-vYvc3iJg.svg",import.meta.url).href;function OE(i){const e=[];for(const t of i.replace(/\r\n/g,` `).split(` -`)){const n=/^###\s+(.+)$/.exec(t),a=e.at(-1);if(n){const s=n[1].trim();e.push({term:s,forms:[s],text:""})}else a&&/^(auch|also):/i.test(t)?a.forms.push(...t.replace(/^(auch|also):/i,"").split(",").map(s=>s.trim()).filter(Boolean)):a&&t.trim()!==""&&(a.text=(a.text+" "+t.trim()).trim())}return e.filter(t=>t.text!=="")}const PW=i=>i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");function am(i){const e=i.flatMap(t=>t.forms).sort((t,n)=>n.length-t.length);if(e.length!==0)return new RegExp(`(?t.forms.includes(e))}class $o extends Error{}function DW(i){return i==="zuhoerer"||i==="vertrag"||i==="layout"||i==="bombe"||i==="frage"||i==="reihenfolge"}function BW(i,e,t){const n=h=>{throw new $o(`${t}: ${h}`)};let a="",s="",r="",o=[],l,u;const m=[];let c,d=!1;for(const h of e){const g=h.trim();if(c&&d&&(/^ {4}|^\t/.test(h)||g==="")){c.code+=(c.code?` +`)){const n=/^###\s+(.+)$/.exec(t),a=e.at(-1);if(n){const s=n[1].trim();e.push({term:s,forms:[s],text:""})}else a&&/^(auch|also):/i.test(t)?a.forms.push(...t.replace(/^(auch|also):/i,"").split(",").map(s=>s.trim()).filter(Boolean)):a&&t.trim()!==""&&(a.text=(a.text+" "+t.trim()).trim())}return e.filter(t=>t.text!=="")}const ME=i=>i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");function am(i){const e=i.flatMap(t=>t.forms).sort((t,n)=>n.length-t.length);if(e.length!==0)return new RegExp(`(?t.forms.includes(e))}class $o extends Error{}function ZE(i){return i==="zuhoerer"||i==="vertrag"||i==="layout"||i==="bombe"||i==="frage"||i==="reihenfolge"}function LE(i,e,t){const n=h=>{throw new $o(`${t}: ${h}`)};let a="",s="",r="",o=[],l,u;const m=[];let c,d=!1;for(const h of e){const g=h.trim();if(c&&d&&(/^ {4}|^\t/.test(h)||g==="")){c.code+=(c.code?` `:"")+h.replace(/^( {4}|\t)/,"");continue}if(d=!1,!g)continue;const f=/^(titel|intro|antworten|frage|runde|klicks|richtig|zeit|fehler|besser|daten|stelle):\s*(.*)$/.exec(g);if(f){const[,v,w]=f;v==="runde"?(c={code:"",question:r,options:[],explanation:"",clicks:[]},m.push(c),d=!0):c?v==="frage"?c.question=w:v==="fehler"?c.wrongLine=Number(w):v==="besser"?c.fix=w:v==="stelle"?c.wrongPart=w.trim():v==="klicks"?c.clicks=w.split(",").map(z=>z.trim()).filter(Boolean):v==="richtig"?c.rightText=w:n(`„${v}:“ gehört vor die erste Runde.`):v==="titel"?a=w:v==="intro"?s=w:v==="antworten"?o=w.split("|").map(z=>z.trim()):v==="frage"?r=w:v==="zeit"?l=Number(w):v==="daten"?u=w==="csv"?w:n("„daten:“ kennt nur „csv“."):n(`„${v}:“ gehört in eine Runde.`);continue}c||n(`Unbekannte Zeile vor der ersten Runde: „${g}“`);const b=c,x=/^-\s+(\[x\]\s+)?(.+)$/.exec(g);x?b.options.push({text:x[2].trim().replaceAll("\\n",` `),right:!!x[1]}):g.startsWith(">")?b.explanation+=(b.explanation?" ":"")+g.slice(1).trim():n(`Unbekannte Zeile im Spiel: „${g}“`)}return a||n("Das Spiel braucht eine Zeile „titel:“."),m.length||n("Das Spiel braucht mindestens eine „runde:“."),m.forEach((h,g)=>{if(h.code=h.code.replace(/\n+$/,""),i==="bombe"){const f=h.code.split(` -`),b=h.wrongLine;if((!b||!Number.isInteger(b)||b<1||b>f.length||!f[b-1].trim())&&n(`Runde ${g+1}: „fehler:“ muss eine Zeile des Codes sein.`),h.fix||n(`Runde ${g+1}: „besser:“ fehlt.`),h.options.length&&n(`Runde ${g+1}: Bei „bombe“ gibt es keine Antworten, man tippt auf die Zeile.`),h.question||n(`Runde ${g+1}: keine Frage.`),h.wrongPart!==void 0){u&&n(`Runde ${g+1}: „stelle:“ geht nur bei Java, nicht bei CSV.`);const x=fg(f[b-1]).filter(v=>v.part).map(v=>v.text);x.filter(v=>v===h.wrongPart).length!==1&&n(`Runde ${g+1}: „stelle: ${h.wrongPart}“ ist kein Teil der Zeile ${b}. Teile: ${x.map(v=>`„${v}“`).join(", ")}`)}return}if(i==="reihenfolge"){h.options.length<3&&n(`Runde ${g+1}: „reihenfolge“ braucht mindestens drei Schritte.`),h.options.some(f=>f.right)&&n(`Runde ${g+1}: Bei „reihenfolge“ gibt es kein [x], die Schritte stehen der Reihe nach da.`),new Set(h.options.map(f=>f.text)).size!==h.options.length&&n(`Runde ${g+1}: zwei Schritte sind gleich.`),h.question||n(`Runde ${g+1}: keine Frage.`);return}if(h.options.length||(o.length||n(`Runde ${g+1}: keine Antworten.`),(!h.rightText||!o.includes(h.rightText))&&n(`Runde ${g+1}: „richtig:“ muss eine der Antworten sein.`),h.options=o.map(f=>({text:f,right:f===h.rightText}))),h.options.filter(f=>f.right).length!==1&&n(`Runde ${g+1}: genau eine Antwort muss richtig sein.`),h.question||n(`Runde ${g+1}: keine Frage.`),i==="layout"&&h.options.forEach(f=>bg(f.text,`Runde ${g+1}`,n)),i==="zuhoerer")try{const f=xg(h.code);for(const b of h.clicks)f.buttons.some(x=>x.caption===b)||n(`Runde ${g+1}: Knopf „${b}“ gibt es nicht.`);ZW(f,h.clicks)}catch(f){if(f instanceof $o)throw f;n(`Runde ${g+1}: ${f.message}`)}delete h.rightText}),i==="bombe"&&!(l&&l>0)&&n("„bombe“ braucht „zeit:“ mit den Sekunden je Runde."),{kind:i,title:a,intro:s,...i==="bombe"?{seconds:l,...u?{data:u}:{}}:{},rounds:m}}function ba(i,e){const t=[];let n=0,a="";for(let s=0;so&&/\s/.test(i[l-1]);)l--;l>o&&a.push([e+o,e+l]),s=r+n}return a}const OW=(i,e)=>i[e]==="+"&&i[e-1]!=="+"&&i[e+1]!=="+"&&i[e+1]!=="=",MW=(i,e)=>i[e]==="="&&!"=<>!+-*/%".includes(i[e-1]??"")&&i[e+1]!=="=";function fg(i){const e=/^\s*/.exec(i)[0],t=i.slice(e.length).replace(/\s+$/,""),n=(()=>{const o=/^(?:\}\s*)?(?:else\s+)?(for|if|while)\s*\(/.exec(t);if(o){const g=o[0].length-1,f=rm(t,g);if(f<0)return[];const b=t.slice(g+1,f);if(o[1]!=="for")return b1(b,g+1,[],0);const x=ba(b,(v,w)=>v[w]===";");return x.length===2?b1(b,g+1,x,1):[]}if(!t.endsWith(";"))return[];const l=t.slice(0,-1),u=ba(l,MW);if(u.length===1)return b1(l,0,u,1);if(u.length)return[];const m=l.indexOf("(");if(m<=0||rm(l,m)!==l.length-1||/^(new|return)\b/.test(l))return[];const c=b1(l.slice(0,m),0,[],0),d=l.slice(m+1,-1),h=b1(d,m+1,ba(d,(g,f)=>g[f]===","),1).flatMap(([g,f])=>{const b=l.slice(g,f);return b1(b,g,ba(b,OW),1)});return[...c,...h]})(),a=n.length?n:t?[[0,t.length]]:[],s=e?[{text:e,part:!1}]:[];let r=0;for(const[o,l]of a)o>r&&s.push({text:t.slice(r,o),part:!1}),s.push({text:t.slice(o,l),part:!0}),r=l;return r{throw new $o(n)}){const n=/^(grid|flow|border):\s*(.+)$/.exec(i);if(!n)return t(`${e}: Antwort „${i}“ ist kein Fensterbild (grid:, flow: oder border:).`);if(n[1]==="border"){const s={};for(const r of n[2].split(/\s+/)){const o=/^([NSWEC])=(.+)$/.exec(r);o||t(`${e}: „${r}“ im BorderLayout-Bild verstehe ich nicht (z. B. N=A).`),s[o[1]]=o[2]}return{kind:"border",areas:s}}const a=n[2].split("/").map(s=>s.trim().split(/\s+/).filter(Boolean));return{kind:n[1],rows:a}}const Ka='"((?:[^"\\\\]|\\\\.)*)"';function xg(i){const e=i.split(` -`),t={title:"",buttons:[],labels:[],ints:{},listeners:[]},n=new Map,a=(r,o,l)=>{if(o.startsWith("{")){let m=r+1;const c=[];for(;m=e.length)throw new Error(`Dem Zuhörer fehlt „${l}“.`);return{from:r,to:m,statements:Ko(c.join(" "))}}const u=l==="});"?o.replace(/\)\s*;\s*$/,""):o.replace(/;\s*$/,"");return{from:r,to:r,statements:Ko(u)}},s=r=>{if(!t.buttons.some(o=>o.name===r))throw new Error(`Knopf ${r} ist nicht angelegt.`);return r};for(let r=0;r\s*(.*)$/.exec(o)){const u=a(r,l[2],"};");n.set(l[1],u),r=u.to}else if(l=/^(\w+)\.addActionListener\(\s*(\w+)\s*\)\s*;$/.exec(o)){const u=n.get(l[2]);if(!u)throw new Error(`Zuhörer ${l[2]} ist nicht angelegt.`);t.listeners.push({button:s(l[1]),...u})}else if(l=/^(\w+)\.addActionListener\(\s*\w+\s*->\s*(.*)$/.exec(o)){const u=a(r,l[2],"});");t.listeners.push({button:s(l[1]),...u}),r=u.to}}return t}function Ko(i){const e=[];let t=0;const n=()=>{for(;t{let u=0,m=!1;const c=t+1;for(;t{let o=0,l=!1;const u=t;for(;t{if(n(),i[t]==="{")return Ko(a("{","}"));if(/^if\s*\(/.test(i.slice(t))){t=i.indexOf("(",t);const l=a("(",")").trim(),u=r();n();let m=[];return/^else\b/.test(i.slice(t))&&(t+=4,m=r()),[{condition:l,then:u,otherwise:m}]}const o=s();return o?[o]:[]};for(n();ta.caption===t)??i.buttons.find(a=>e.texts[a.name]===t);if(!n)throw new Error(`Knopf „${t}“ gibt es nicht.`);return wg(i,e,n.name)}function wg(i,e,t){const n=i.listeners.find(r=>r.button===t),a=[],s={source:t,command:e.texts[t]};for(const r of(n==null?void 0:n.statements)??[])zg(r,e,a,s);return{button:t,listener:n,texts:{...e.texts},console:a}}function ZW(i,e){const t=vg(i);return e.map(n=>yg(i,t,n))}function zg(i,e,t,n){if(typeof i!="string"){for(const s of LW(i.condition,e,n)?i.then:i.otherwise)zg(s,e,t,n);return}let a;if(a=/^(\w+)\.setText\((.*)\)$/.exec(i)){if(!(a[1]in e.texts))throw new Error(`${a[1]} ist keine Beschriftung und kein Knopf.`);e.texts[a[1]]=String($n(a[2],e,n))}else if(a=/^System\.out\.println\((.*)\)$/.exec(i))t.push(String($n(a[1],e,n)));else if(a=/^(\w+)\s*(\+\+|--)$/.exec(i))e.ints[om(a[1],e)]+=a[2]==="++"?1:-1;else if(a=/^(\w+)\s*([+-]?=)\s*(.+)$/.exec(i)){const s=om(a[1],e),r=Number($n(a[3],e,n));e.ints[s]=a[2]==="="?r:a[2]==="+="?e.ints[s]+r:e.ints[s]-r}else throw new Error(`Diese Anweisung kann das Spiel nicht nachspielen: „${i}“`)}function LW(i,e,t){let n;if(n=/^e\.getSource\(\)\s*(==|!=)\s*(\w+)$/.exec(i)){if(!(n[2]in e.texts))throw new Error(`${n[2]} ist kein Knopf.`);return t.source===n[2]==(n[1]==="==")}if(n=/^(!?)(.+)\.equals\((.+)\)$/.exec(i))return String($n(n[2],e,t))===String($n(n[3],e,t))!=(n[1]==="!");if(n=/^(.+?)\s*(==|!=|<=|>=|<|>)\s*(.+)$/.exec(i)){const a=Number($n(n[1],e,t)),s=Number($n(n[3],e,t));return{"==":a===s,"!=":a!==s,"<=":a<=s,">=":a>=s,"<":a":a>s}[n[2]]}throw new Error(`Diese Bedingung kann das Spiel nicht nachspielen: „${i}“`)}function om(i,e){if(!(i in e.ints))throw new Error(`Variable ${i} ist nicht angelegt.`);return i}function $n(i,e,t){const n=i.match(new RegExp(`${Ka}|\\d+|e\\.getActionCommand\\(\\)|\\w+(?:\\.getText\\(\\))?|[-+*/()]`,"g"))??[];let a=0;const s=()=>{const l=n[a++];if(l===void 0)throw new Error(`Unvollständiger Ausdruck „${i}“`);if(l==="("){const u=o();return a++,u}if(l.startsWith('"'))return JSON.parse(l);if(/^\d+$/.test(l))return Number(l);if(l==="e.getActionCommand()"){if(!t)throw new Error("e.getActionCommand() gibt es nur im Zuhörer.");return t.command}if(l.endsWith(".getText()"))return e.texts[l.slice(0,-10)]??"";if(l in e.ints)return e.ints[l];throw new Error(`Unbekannt: „${l}“`)},r=()=>{let l=s();for(;n[a]==="*"||n[a]==="/";){const u=n[a++],m=Number(s());l=u==="*"?Number(l)*m:Math.trunc(Number(l)/m)}return l},o=()=>{let l=r();for(;n[a]==="+"||n[a]==="-";){const u=n[a++],m=r();u==="+"?l=typeof l=="string"||typeof m=="string"?`${l}${m}`:l+m:l=Number(l)-Number(m)}return l};return o()}class Ig extends Error{}const Cs="___";function WW(i){const e=Array.from({length:i.rows},()=>Array(i.cols).fill(""));for(const t of i.words)[...t.word].forEach((n,a)=>e[t.row+(t.across?0:a)][t.col+(t.across?a:0)]=n);return e}function EW(i,e){const t=k=>{throw new Ig(`${e}: ${k}`)},n=(k,P)=>{const D=/^(\d+)\s+(\d+)$/.exec(k.trim());return!D||Number(D[1])<1||Number(D[2])<1?t(`${P}: „${k}“ ist kein Feld (Zeile Spalte, ab 1).`):{row:Number(D[1])-1,col:Number(D[2])-1}};let a="",s="",r="ABCDEFGHIJKLMNOPQRSTUVWXYZ",o="",l="",u="",m="";const c=[],d=[];let h=[],g,f="start";for(const k of i){const P=k.trim();if(g&&(/^( {4}|\t)/.test(k)||P==="")){const A=k.replace(/^( {4}|\t)/,"");if(g==="station"){const B=c[c.length-1];B.code+=(B.code?` -`:"")+A}else u+=(u?` -`:"")+A;continue}if(g=void 0,!P)continue;const D=/^(titel|intro|alphabet|station|frage|zahl|feld|tipp|kreuzwort|lösung|loesung|tor|ende):\s*(.*)$/.exec(P);if(D){const[,A,B]=D;if(A==="station")c.push({name:B,code:"",question:"",hint:"",explanation:""}),f="station",g="station";else if(A==="kreuzwort")o=B,f="crossword";else if(A==="tor")l=B,f="gate",g="gate";else if(A==="titel")a=B;else if(A==="intro")s=B;else if(A==="alphabet")r=B;else if(A==="ende")m=B;else if(A==="lösung"||A==="loesung")f!=="crossword"&&t("„lösung:“ gehört zum Kreuzworträtsel."),h=B.split(",").map(C=>n(C,"lösung"));else{f!=="station"&&t(`„${A}:“ gehört in eine Station.`);const C=c[c.length-1];A==="frage"?C.question=B:A==="tipp"?C.hint=B:A==="zahl"?C.answer=/^-?\d+$/.test(B)?Number(B):t(`Station „${C.name}“: „zahl:“ muss eine ganze Zahl sein.`):Object.assign(C,n(B,`Station „${C.name}“`))}continue}if(f==="crossword"){d.push(kg(P,t));continue}if(f==="station"&&P.startsWith(">")){const A=c[c.length-1];A.explanation+=(A.explanation?" ":"")+P.slice(1).trim();continue}t(`Unbekannte Zeile im Spiel: „${P}“`)}a||t("Das Spiel braucht eine Zeile „titel:“."),c.length||t("Das Spiel braucht mindestens eine „station:“."),d.length||t("Das Spiel braucht ein „kreuzwort:“ mit Wörtern."),h.length||t("Das Kreuzworträtsel braucht eine Zeile „lösung:“."),u.includes(Cs)||t(`Der Code bei „tor:“ braucht ${Cs} für das Eingabefeld.`),new Set(r).size!==r.length&&t("Im Alphabet kommt ein Zeichen doppelt vor.");const{rows:b,cols:x,words:v,keyword:w,grid:z}=Sg(d,h,t),I=(k,P)=>{var D;return((D=z[k])==null?void 0:D[P])??""},S=c.map(k=>{k.code||t(`Station „${k.name}“: Code fehlt.`),k.question||t(`Station „${k.name}“: „frage:“ fehlt.`),k.answer===void 0&&t(`Station „${k.name}“: „zahl:“ fehlt.`),k.row===void 0&&t(`Station „${k.name}“: „feld:“ fehlt.`);const P=r.charAt(k.answer);P||t(`Station „${k.name}“: alphabet.charAt(${k.answer}) gibt es nicht.`);const D=I(k.row,k.col);return D!==P&&t(`Station „${k.name}“: alphabet.charAt(${k.answer}) ist ${P}, im Feld ${k.row+1} ${k.col+1} steht aber „${D}“.`),k.code=k.code.replace(/\n+$/,""),k});return{title:a,intro:s,alphabet:r,stations:S,crosswordText:o,rows:b,cols:x,words:v,solution:h,keyword:w,gateText:l,gateCode:u.replace(/\n+$/,""),end:m}}const NW=/^-\s+([→↓])\s+(\d+)\s+(\d+)\s+([A-ZÄÖÜ]+):\s*(.+)$/u;function kg(i,e){const t=NW.exec(i);return t||e(`Kreuzworträtsel: „${i}“ verstehe ich nicht (z. B. „- → 1 3 STRING: Hinweis“).`),{across:t[1]==="→",row:Number(t[2])-1,col:Number(t[3])-1,word:t[4],clue:t[5]}}function Sg(i,e,t){const n=Math.max(...i.map(m=>m.row+(m.across?1:m.word.length))),a=Math.max(...i.map(m=>m.col+(m.across?m.word.length:1))),s=Array.from({length:n},()=>Array(a).fill(""));for(const m of i)[...m.word].forEach((c,d)=>{const h=m.row+(m.across?0:d),g=m.col+(m.across?d:0);s[h][g]&&s[h][g]!==c&&t(`Kreuzworträtsel: ${m.word} passt in Zeile ${h+1}, Spalte ${g+1} nicht (dort steht ${s[h][g]}).`),s[h][g]=c});const r=[...new Set(i.map(m=>m.row*a+m.col))].sort((m,c)=>m-c),o=i.map(m=>({...m,number:r.indexOf(m.row*a+m.col)+1})),l=(m,c)=>{var d;return((d=s[m])==null?void 0:d[c])??""},u=e.map(({row:m,col:c})=>l(m,c)||t(`lösung: In Zeile ${m+1}, Spalte ${c+1} ist kein Feld.`)).join("");return{rows:n,cols:a,words:o,keyword:u,grid:s}}function FW(i,e){const t=d=>{throw new Ig(`${e}: ${d}`)};let n="",a="",s="",r=[];const o=[];for(const d of i){const h=d.trim();if(!h)continue;const g=/^(titel|intro|lösung|loesung|ende):\s*(.*)$/.exec(h);if(g){const[,f,b]=g;f==="titel"?n=b:f==="intro"?a=b:f==="ende"?s=b:r=b.split(",").map(x=>{const v=/^(\d+)\s+(\d+)$/.exec(x.trim());return!v||Number(v[1])<1||Number(v[2])<1?t(`lösung: „${x.trim()}“ ist kein Feld (Zeile Spalte, ab 1).`):{row:Number(v[1])-1,col:Number(v[2])-1}});continue}h.startsWith("-")?o.push(kg(h,t)):t(`Unbekannte Zeile im Spiel: „${h}“`)}n||t("Das Spiel braucht eine Zeile „titel:“."),o.length<2&&t("Das Rätsel braucht mindestens zwei Wörter."),r.length||t("Das Rätsel braucht eine Zeile „lösung:“.");const{rows:l,cols:u,words:m,keyword:c}=Sg(o,r,t);return{title:n,intro:a,rows:l,cols:u,words:m,solution:r,keyword:c,end:s}}const RW=5e3;function Tg(i,e,t,n={}){const a=new Bi(i,e),s=new _s(t),r=m=>({pose:{...s.pose},trail:s.trail.map(c=>({...c})),leds:[...s.leds],screen:s.screen,tone:m}),o=[r()];let l=0;const u=(m,c)=>({frames:o,stop:m,notice:c,bumps:s.bumps,distance:Math.round(s.trail.slice(1).reduce((d,h,g)=>d+Math.hypot(h.x-s.trail[g].x,h.y-s.trail[g].y),0))});for(let m=0;mh!==0);s.tick(z0),d&&o.push(r())}return u("limit")}const _g=["boolean","int","double","String","char","long","float","short","byte"],JW=new Set([..._g,"Boolean","Integer","Double","Character","Long","Float","Short","Byte","var","void"]);function GW(i){if(JW.has(i))return;const e=i.toLowerCase();for(const t of _g)if(HW(e,t.toLowerCase())<=(t.length>=6?2:1))return t}function HW(i,e){const t=Array.from({length:i.length+1},(n,a)=>Array.from({length:e.length+1},(s,r)=>a===0?r:r===0?a:0));for(let n=1;n<=i.length;n++)for(let a=1;a<=e.length;a++){const s=i[n-1]===e[a-1]?0:1;t[n][a]=Math.min(t[n-1][a]+1,t[n][a-1]+1,t[n-1][a-1]+s),n>1&&a>1&&i[n-1]===e[a-2]&&i[n-2]===e[a-1]&&(t[n][a]=Math.min(t[n][a],t[n-2][a-2]+1))}return t[i.length][e.length]}const VW=[">>>=","<<=",">>=",">>>","->","::","++","--","==","!=","<=",">=","&&","||","+=","-=","*=","/=","%=","&=","|=","^=","<<"];function qW(i,e){const t=[];let n=0,a=0;const s=(r,o,l,u)=>t.push({kind:r,text:i.slice(o,l),start:o,end:l,line:u});for(;nf.length||!f[b-1].trim())&&n(`Runde ${g+1}: „fehler:“ muss eine Zeile des Codes sein.`),h.fix||n(`Runde ${g+1}: „besser:“ fehlt.`),h.options.length&&n(`Runde ${g+1}: Bei „bombe“ gibt es keine Antworten, man tippt auf die Zeile.`),h.question||n(`Runde ${g+1}: keine Frage.`),h.wrongPart!==void 0){u&&n(`Runde ${g+1}: „stelle:“ geht nur bei Java, nicht bei CSV.`);const x=fg(f[b-1]).filter(v=>v.part).map(v=>v.text);x.filter(v=>v===h.wrongPart).length!==1&&n(`Runde ${g+1}: „stelle: ${h.wrongPart}“ ist kein Teil der Zeile ${b}. Teile: ${x.map(v=>`„${v}“`).join(", ")}`)}return}if(i==="reihenfolge"){h.options.length<3&&n(`Runde ${g+1}: „reihenfolge“ braucht mindestens drei Schritte.`),h.options.some(f=>f.right)&&n(`Runde ${g+1}: Bei „reihenfolge“ gibt es kein [x], die Schritte stehen der Reihe nach da.`),new Set(h.options.map(f=>f.text)).size!==h.options.length&&n(`Runde ${g+1}: zwei Schritte sind gleich.`),h.question||n(`Runde ${g+1}: keine Frage.`);return}if(h.options.length||(o.length||n(`Runde ${g+1}: keine Antworten.`),(!h.rightText||!o.includes(h.rightText))&&n(`Runde ${g+1}: „richtig:“ muss eine der Antworten sein.`),h.options=o.map(f=>({text:f,right:f===h.rightText}))),h.options.filter(f=>f.right).length!==1&&n(`Runde ${g+1}: genau eine Antwort muss richtig sein.`),h.question||n(`Runde ${g+1}: keine Frage.`),i==="layout"&&h.options.forEach(f=>bg(f.text,`Runde ${g+1}`,n)),i==="zuhoerer")try{const f=xg(h.code);for(const b of h.clicks)f.buttons.some(x=>x.caption===b)||n(`Runde ${g+1}: Knopf „${b}“ gibt es nicht.`);NE(f,h.clicks)}catch(f){if(f instanceof $o)throw f;n(`Runde ${g+1}: ${f.message}`)}delete h.rightText}),i==="bombe"&&!(l&&l>0)&&n("„bombe“ braucht „zeit:“ mit den Sekunden je Runde."),{kind:i,title:a,intro:s,...i==="bombe"?{seconds:l,...u?{data:u}:{}}:{},rounds:m}}function ba(i,e){const t=[];let n=0,a="";for(let s=0;so&&/\s/.test(i[l-1]);)l--;l>o&&a.push([e+o,e+l]),s=r+n}return a}const WE=(i,e)=>i[e]==="+"&&i[e-1]!=="+"&&i[e+1]!=="+"&&i[e+1]!=="=",EE=(i,e)=>i[e]==="="&&!"=<>!+-*/%".includes(i[e-1]??"")&&i[e+1]!=="=";function fg(i){const e=/^\s*/.exec(i)[0],t=i.slice(e.length).replace(/\s+$/,""),n=(()=>{const o=/^(?:\}\s*)?(?:else\s+)?(for|if|while)\s*\(/.exec(t);if(o){const g=o[0].length-1,f=rm(t,g);if(f<0)return[];const b=t.slice(g+1,f);if(o[1]!=="for")return b1(b,g+1,[],0);const x=ba(b,(v,w)=>v[w]===";");return x.length===2?b1(b,g+1,x,1):[]}if(!t.endsWith(";"))return[];const l=t.slice(0,-1),u=ba(l,EE);if(u.length===1)return b1(l,0,u,1);if(u.length)return[];const m=l.indexOf("(");if(m<=0||rm(l,m)!==l.length-1||/^(new|return)\b/.test(l))return[];const c=b1(l.slice(0,m),0,[],0),d=l.slice(m+1,-1),h=b1(d,m+1,ba(d,(g,f)=>g[f]===","),1).flatMap(([g,f])=>{const b=l.slice(g,f);return b1(b,g,ba(b,WE),1)});return[...c,...h]})(),a=n.length?n:t?[[0,t.length]]:[],s=e?[{text:e,part:!1}]:[];let r=0;for(const[o,l]of a)o>r&&s.push({text:t.slice(r,o),part:!1}),s.push({text:t.slice(o,l),part:!0}),r=l;return r{throw new $o(n)}){const n=/^(grid|flow|border):\s*(.+)$/.exec(i);if(!n)return t(`${e}: Antwort „${i}“ ist kein Fensterbild (grid:, flow: oder border:).`);if(n[1]==="border"){const s={};for(const r of n[2].split(/\s+/)){const o=/^([NSWEC])=(.+)$/.exec(r);o||t(`${e}: „${r}“ im BorderLayout-Bild verstehe ich nicht (z. B. N=A).`),s[o[1]]=o[2]}return{kind:"border",areas:s}}const a=n[2].split("/").map(s=>s.trim().split(/\s+/).filter(Boolean));return{kind:n[1],rows:a}}const Ka='"((?:[^"\\\\]|\\\\.)*)"';function xg(i){const e=i.split(` +`),t={title:"",buttons:[],labels:[],ints:{},listeners:[]},n=new Map,a=(r,o,l)=>{if(o.startsWith("{")){let m=r+1;const c=[];for(;m=e.length)throw new Error(`Dem Zuhörer fehlt „${l}“.`);return{from:r,to:m,statements:Ko(c.join(" "))}}const u=l==="});"?o.replace(/\)\s*;\s*$/,""):o.replace(/;\s*$/,"");return{from:r,to:r,statements:Ko(u)}},s=r=>{if(!t.buttons.some(o=>o.name===r))throw new Error(`Knopf ${r} ist nicht angelegt.`);return r};for(let r=0;r\s*(.*)$/.exec(o)){const u=a(r,l[2],"};");n.set(l[1],u),r=u.to}else if(l=/^(\w+)\.addActionListener\(\s*(\w+)\s*\)\s*;$/.exec(o)){const u=n.get(l[2]);if(!u)throw new Error(`Zuhörer ${l[2]} ist nicht angelegt.`);t.listeners.push({button:s(l[1]),...u})}else if(l=/^(\w+)\.addActionListener\(\s*\w+\s*->\s*(.*)$/.exec(o)){const u=a(r,l[2],"});");t.listeners.push({button:s(l[1]),...u}),r=u.to}}return t}function Ko(i){const e=[];let t=0;const n=()=>{for(;t{let u=0,m=!1;const c=t+1;for(;t{let o=0,l=!1;const u=t;for(;t{if(n(),i[t]==="{")return Ko(a("{","}"));if(/^if\s*\(/.test(i.slice(t))){t=i.indexOf("(",t);const l=a("(",")").trim(),u=r();n();let m=[];return/^else\b/.test(i.slice(t))&&(t+=4,m=r()),[{condition:l,then:u,otherwise:m}]}const o=s();return o?[o]:[]};for(n();ta.caption===t)??i.buttons.find(a=>e.texts[a.name]===t);if(!n)throw new Error(`Knopf „${t}“ gibt es nicht.`);return wg(i,e,n.name)}function wg(i,e,t){const n=i.listeners.find(r=>r.button===t),a=[],s={source:t,command:e.texts[t]};for(const r of(n==null?void 0:n.statements)??[])zg(r,e,a,s);return{button:t,listener:n,texts:{...e.texts},console:a}}function NE(i,e){const t=vg(i);return e.map(n=>yg(i,t,n))}function zg(i,e,t,n){if(typeof i!="string"){for(const s of FE(i.condition,e,n)?i.then:i.otherwise)zg(s,e,t,n);return}let a;if(a=/^(\w+)\.setText\((.*)\)$/.exec(i)){if(!(a[1]in e.texts))throw new Error(`${a[1]} ist keine Beschriftung und kein Knopf.`);e.texts[a[1]]=String($n(a[2],e,n))}else if(a=/^System\.out\.println\((.*)\)$/.exec(i))t.push(String($n(a[1],e,n)));else if(a=/^(\w+)\s*(\+\+|--)$/.exec(i))e.ints[om(a[1],e)]+=a[2]==="++"?1:-1;else if(a=/^(\w+)\s*([+-]?=)\s*(.+)$/.exec(i)){const s=om(a[1],e),r=Number($n(a[3],e,n));e.ints[s]=a[2]==="="?r:a[2]==="+="?e.ints[s]+r:e.ints[s]-r}else throw new Error(`Diese Anweisung kann das Spiel nicht nachspielen: „${i}“`)}function FE(i,e,t){let n;if(n=/^e\.getSource\(\)\s*(==|!=)\s*(\w+)$/.exec(i)){if(!(n[2]in e.texts))throw new Error(`${n[2]} ist kein Knopf.`);return t.source===n[2]==(n[1]==="==")}if(n=/^(!?)(.+)\.equals\((.+)\)$/.exec(i))return String($n(n[2],e,t))===String($n(n[3],e,t))!=(n[1]==="!");if(n=/^(.+?)\s*(==|!=|<=|>=|<|>)\s*(.+)$/.exec(i)){const a=Number($n(n[1],e,t)),s=Number($n(n[3],e,t));return{"==":a===s,"!=":a!==s,"<=":a<=s,">=":a>=s,"<":a":a>s}[n[2]]}throw new Error(`Diese Bedingung kann das Spiel nicht nachspielen: „${i}“`)}function om(i,e){if(!(i in e.ints))throw new Error(`Variable ${i} ist nicht angelegt.`);return i}function $n(i,e,t){const n=i.match(new RegExp(`${Ka}|\\d+|e\\.getActionCommand\\(\\)|\\w+(?:\\.getText\\(\\))?|[-+*/()]`,"g"))??[];let a=0;const s=()=>{const l=n[a++];if(l===void 0)throw new Error(`Unvollständiger Ausdruck „${i}“`);if(l==="("){const u=o();return a++,u}if(l.startsWith('"'))return JSON.parse(l);if(/^\d+$/.test(l))return Number(l);if(l==="e.getActionCommand()"){if(!t)throw new Error("e.getActionCommand() gibt es nur im Zuhörer.");return t.command}if(l.endsWith(".getText()"))return e.texts[l.slice(0,-10)]??"";if(l in e.ints)return e.ints[l];throw new Error(`Unbekannt: „${l}“`)},r=()=>{let l=s();for(;n[a]==="*"||n[a]==="/";){const u=n[a++],m=Number(s());l=u==="*"?Number(l)*m:Math.trunc(Number(l)/m)}return l},o=()=>{let l=r();for(;n[a]==="+"||n[a]==="-";){const u=n[a++],m=r();u==="+"?l=typeof l=="string"||typeof m=="string"?`${l}${m}`:l+m:l=Number(l)-Number(m)}return l};return o()}class Ig extends Error{}const As="___";function RE(i){const e=Array.from({length:i.rows},()=>Array(i.cols).fill(""));for(const t of i.words)[...t.word].forEach((n,a)=>e[t.row+(t.across?0:a)][t.col+(t.across?a:0)]=n);return e}function JE(i,e){const t=k=>{throw new Ig(`${e}: ${k}`)},n=(k,D)=>{const P=/^(\d+)\s+(\d+)$/.exec(k.trim());return!P||Number(P[1])<1||Number(P[2])<1?t(`${D}: „${k}“ ist kein Feld (Zeile Spalte, ab 1).`):{row:Number(P[1])-1,col:Number(P[2])-1}};let a="",s="",r="ABCDEFGHIJKLMNOPQRSTUVWXYZ",o="",l="",u="",m="";const c=[],d=[];let h=[],g,f="start";for(const k of i){const D=k.trim();if(g&&(/^( {4}|\t)/.test(k)||D==="")){const C=k.replace(/^( {4}|\t)/,"");if(g==="station"){const B=c[c.length-1];B.code+=(B.code?` +`:"")+C}else u+=(u?` +`:"")+C;continue}if(g=void 0,!D)continue;const P=/^(titel|intro|alphabet|station|frage|zahl|feld|tipp|kreuzwort|lösung|loesung|tor|ende):\s*(.*)$/.exec(D);if(P){const[,C,B]=P;if(C==="station")c.push({name:B,code:"",question:"",hint:"",explanation:""}),f="station",g="station";else if(C==="kreuzwort")o=B,f="crossword";else if(C==="tor")l=B,f="gate",g="gate";else if(C==="titel")a=B;else if(C==="intro")s=B;else if(C==="alphabet")r=B;else if(C==="ende")m=B;else if(C==="lösung"||C==="loesung")f!=="crossword"&&t("„lösung:“ gehört zum Kreuzworträtsel."),h=B.split(",").map(A=>n(A,"lösung"));else{f!=="station"&&t(`„${C}:“ gehört in eine Station.`);const A=c[c.length-1];C==="frage"?A.question=B:C==="tipp"?A.hint=B:C==="zahl"?A.answer=/^-?\d+$/.test(B)?Number(B):t(`Station „${A.name}“: „zahl:“ muss eine ganze Zahl sein.`):Object.assign(A,n(B,`Station „${A.name}“`))}continue}if(f==="crossword"){d.push(kg(D,t));continue}if(f==="station"&&D.startsWith(">")){const C=c[c.length-1];C.explanation+=(C.explanation?" ":"")+D.slice(1).trim();continue}t(`Unbekannte Zeile im Spiel: „${D}“`)}a||t("Das Spiel braucht eine Zeile „titel:“."),c.length||t("Das Spiel braucht mindestens eine „station:“."),d.length||t("Das Spiel braucht ein „kreuzwort:“ mit Wörtern."),h.length||t("Das Kreuzworträtsel braucht eine Zeile „lösung:“."),u.includes(As)||t(`Der Code bei „tor:“ braucht ${As} für das Eingabefeld.`),new Set(r).size!==r.length&&t("Im Alphabet kommt ein Zeichen doppelt vor.");const{rows:b,cols:x,words:v,keyword:w,grid:z}=Sg(d,h,t),I=(k,D)=>{var P;return((P=z[k])==null?void 0:P[D])??""},S=c.map(k=>{k.code||t(`Station „${k.name}“: Code fehlt.`),k.question||t(`Station „${k.name}“: „frage:“ fehlt.`),k.answer===void 0&&t(`Station „${k.name}“: „zahl:“ fehlt.`),k.row===void 0&&t(`Station „${k.name}“: „feld:“ fehlt.`);const D=r.charAt(k.answer);D||t(`Station „${k.name}“: alphabet.charAt(${k.answer}) gibt es nicht.`);const P=I(k.row,k.col);return P!==D&&t(`Station „${k.name}“: alphabet.charAt(${k.answer}) ist ${D}, im Feld ${k.row+1} ${k.col+1} steht aber „${P}“.`),k.code=k.code.replace(/\n+$/,""),k});return{title:a,intro:s,alphabet:r,stations:S,crosswordText:o,rows:b,cols:x,words:v,solution:h,keyword:w,gateText:l,gateCode:u.replace(/\n+$/,""),end:m}}const GE=/^-\s+([→↓])\s+(\d+)\s+(\d+)\s+([A-ZÄÖÜ]+):\s*(.+)$/u;function kg(i,e){const t=GE.exec(i);return t||e(`Kreuzworträtsel: „${i}“ verstehe ich nicht (z. B. „- → 1 3 STRING: Hinweis“).`),{across:t[1]==="→",row:Number(t[2])-1,col:Number(t[3])-1,word:t[4],clue:t[5]}}function Sg(i,e,t){const n=Math.max(...i.map(m=>m.row+(m.across?1:m.word.length))),a=Math.max(...i.map(m=>m.col+(m.across?m.word.length:1))),s=Array.from({length:n},()=>Array(a).fill(""));for(const m of i)[...m.word].forEach((c,d)=>{const h=m.row+(m.across?0:d),g=m.col+(m.across?d:0);s[h][g]&&s[h][g]!==c&&t(`Kreuzworträtsel: ${m.word} passt in Zeile ${h+1}, Spalte ${g+1} nicht (dort steht ${s[h][g]}).`),s[h][g]=c});const r=[...new Set(i.map(m=>m.row*a+m.col))].sort((m,c)=>m-c),o=i.map(m=>({...m,number:r.indexOf(m.row*a+m.col)+1})),l=(m,c)=>{var d;return((d=s[m])==null?void 0:d[c])??""},u=e.map(({row:m,col:c})=>l(m,c)||t(`lösung: In Zeile ${m+1}, Spalte ${c+1} ist kein Feld.`)).join("");return{rows:n,cols:a,words:o,keyword:u,grid:s}}function HE(i,e){const t=d=>{throw new Ig(`${e}: ${d}`)};let n="",a="",s="",r=[];const o=[];for(const d of i){const h=d.trim();if(!h)continue;const g=/^(titel|intro|lösung|loesung|ende):\s*(.*)$/.exec(h);if(g){const[,f,b]=g;f==="titel"?n=b:f==="intro"?a=b:f==="ende"?s=b:r=b.split(",").map(x=>{const v=/^(\d+)\s+(\d+)$/.exec(x.trim());return!v||Number(v[1])<1||Number(v[2])<1?t(`lösung: „${x.trim()}“ ist kein Feld (Zeile Spalte, ab 1).`):{row:Number(v[1])-1,col:Number(v[2])-1}});continue}h.startsWith("-")?o.push(kg(h,t)):t(`Unbekannte Zeile im Spiel: „${h}“`)}n||t("Das Spiel braucht eine Zeile „titel:“."),o.length<2&&t("Das Rätsel braucht mindestens zwei Wörter."),r.length||t("Das Rätsel braucht eine Zeile „lösung:“.");const{rows:l,cols:u,words:m,keyword:c}=Sg(o,r,t);return{title:n,intro:a,rows:l,cols:u,words:m,solution:r,keyword:c,end:s}}const VE=5e3;function Tg(i,e,t,n={}){const a=new Bi(i,e),s=new _s(t),r=m=>({pose:{...s.pose},trail:s.trail.map(c=>({...c})),leds:[...s.leds],screen:s.screen,tone:m}),o=[r()];let l=0;const u=(m,c)=>({frames:o,stop:m,notice:c,bumps:s.bumps,distance:Math.round(s.trail.slice(1).reduce((d,h,g)=>d+Math.hypot(h.x-s.trail[g].x,h.y-s.trail[g].y),0))});for(let m=0;mh!==0);s.tick(z0),d&&o.push(r())}return u("limit")}const _g=["boolean","int","double","String","char","long","float","short","byte"],qE=new Set([..._g,"Boolean","Integer","Double","Character","Long","Float","Short","Byte","var","void"]);function QE(i){if(qE.has(i))return;const e=i.toLowerCase();for(const t of _g)if(UE(e,t.toLowerCase())<=(t.length>=6?2:1))return t}function UE(i,e){const t=Array.from({length:i.length+1},(n,a)=>Array.from({length:e.length+1},(s,r)=>a===0?r:r===0?a:0));for(let n=1;n<=i.length;n++)for(let a=1;a<=e.length;a++){const s=i[n-1]===e[a-1]?0:1;t[n][a]=Math.min(t[n-1][a]+1,t[n][a-1]+1,t[n-1][a-1]+s),n>1&&a>1&&i[n-1]===e[a-2]&&i[n-2]===e[a-1]&&(t[n][a]=Math.min(t[n][a],t[n-2][a-2]+1))}return t[i.length][e.length]}const YE=[">>>=","<<=",">>=",">>>","->","::","++","--","==","!=","<=",">=","&&","||","+=","-=","*=","/=","%=","&=","|=","^=","<<"];function $E(i,e){const t=[];let n=0,a=0;const s=(r,o,l,u)=>t.push({kind:r,text:i.slice(o,l),start:o,end:l,line:u});for(;ni.startsWith(d,n))??r;n+=c.length,s("op",o,n,l)}return t}const xa=new Set(["if","else","for","while","do","switch","case","default","break","return","try"]),Wr=new Set(["public","private","protected","static","final","abstract"]),lm="(?:int|long|short|byte|float|double|boolean|char|String)";let QW=class{constructor(e,t,n){y(this,"toks");y(this,"comments");y(this,"i",0);y(this,"problems",[]);y(this,"placeholders",[]);y(this,"lines",new Map);y(this,"className");y(this,"imports",[]);y(this,"fileScanners",new Set);this.src=e,this.labels=t,this.opts=n;const a=qW(e,this.problems);this.toks=a.filter(s=>s.kind!=="comment"),this.comments=a.filter(s=>s.kind==="comment")}get tok(){return this.toks[this.i]}is(e,t=this.tok){return t!==void 0&&t.text===e&&t.kind!=="str"}next(){return this.toks[this.i++]}eat(e){return this.is(e)?this.next():void 0}prev(){return this.toks[this.i-1]}problem(e,t,n){const a=t??{start:this.src.length,end:this.src.length};this.problems.push({from:a.start,to:Math.max(a.end,a.start+1),key:e,arg:n})}missingAfter(e,t){const n=e?e.end:this.src.length;this.problems.push({from:Math.max(0,n-1),to:n,key:"web_parse_missing",arg:t})}text(e,t){let n="",a=e;for(const s of this.comments)s.end<=e||s.start>=t||(n+=this.src.slice(a,Math.max(a,s.start)),a=Math.max(a,s.end));return n+=this.src.slice(a,Math.max(a,t)),n.replace(/\s*\n\s*/g," ").trim()}slot(e,t,n){const a=this.text(e,t);if(a===n){const s=this.src.indexOf(n,e);return s>=0&&this.placeholders.push({from:s,to:s+n.length}),""}return a}record(e,t,n){return this.lines.set(e,[t,n]),{element:e,from:t,to:n}}lineOf(e){var t;return(e==null?void 0:e.line)??((t=this.toks[this.toks.length-1])==null?void 0:t.line)??0}checkImports(){const e=["File","PrintWriter","FileReader","FileWriter","BufferedReader","IOException","FileNotFoundException"].map(t=>[t,"java.io"]);for(const[t,n]of[["Scanner","java.util"],["Arrays","java.util"],["Files","java.nio.file"],["Path","java.nio.file"],["Paths","java.nio.file"],...e]){const a=this.imports.some(r=>r===`import${n}.${t};`||r===`import${n}.*;`),s=this.toks.find((r,o)=>{var l;return r.kind==="id"&&r.text===t&&(t!=="Arrays"&&n!=="java.nio.file"||((l=this.toks[o+1])==null?void 0:l.text)===".")});if(!a&&s){this.problem("web_parse_missing_import",s,n==="java.util"?`import ${n}.${t};`:`import ${n}.*;`);return}}}checkScanners(){var n;const e=new Set(["next","nextInt","nextDouble","nextLine","nextBoolean","nextLong","nextFloat","hasNext","hasNextInt","hasNextLine","hasNextDouble"]),t=a=>this.toks.some((s,r)=>{const o=this.toks[r-1];return s.kind==="id"&&s.text===a&&!!o&&(o.kind==="id"&&!xa.has(o.text)&&o.text!=="new"||o.text===">"||o.text==="]")});for(let a=0;a{var s;return((s=this.toks[a-1])==null?void 0:s.text)==="class"}).map(n=>n.text));for(let n=0;nthis.toks.some((c,d)=>{var h;return c.text===m&&((h=this.toks[d-1])==null?void 0:h.kind)==="id"&&!xa.has(this.toks[d-1].text)}),n=["println","print","printf"],a=["length","charAt","substring","indexOf","equals","equalsIgnoreCase","compareTo","contains","startsWith","endsWith","toUpperCase","toLowerCase","trim","isEmpty","split","replace","sqrt","pow","abs","max","min","random","round","parseInt","parseDouble","nextInt","nextDouble","nextLine","next","hasNext","hasNextInt","hasNextLine"],s=(m,c)=>c.find(d=>d!==m&&d.toLowerCase()===m.toLowerCase());for(let m=0;mo.text).join(""));continue}const a=this.classStart();if(a!==void 0){this.className??(this.className=a.name),this.i=a.index;const r=this.parseClassBody();e.push(...r.elements),t??(t=r.caption);continue}const s=this.methodStart();if(s){n&&this.problem("web_parse_more_methods",this.tok);const r=this.parseMethod(s);n||(t=s.caption,e.push(...r)),n=!0;continue}if(this.is("}")){this.problem("web_parse_extra",this.next(),"}");continue}e.push(...this.parseStatement())}return{caption:t,elements:this.finishList(e)}}skipPast(e){for(;this.tok&&!this.is(e);)this.next();this.eat(e)}classStart(){var n,a;let e=this.i;for(;this.toks[e]&&Wr.has(this.toks[e].text);)e++;if(((n=this.toks[e])==null?void 0:n.text)!=="class"||((a=this.toks[e+1])==null?void 0:a.kind)!=="id")return;const t=this.toks[e+1].text;for(e+=2;this.toks[e]&&this.toks[e].text!=="{";)e++;return{name:t,index:e+1}}parseClassBody(){let e,t,n=!1;const a=[];for(;this.tok&&!this.is("}");){const s=this.methodStart();if(!s){this.is("{")?a.push(...this.parseBlock().elements):a.push(...this.parseStatement());continue}const r=this.tok,o=this.parseMethod(s);s.name==="main"?e??(e=o):t?n=!0:t={caption:s.caption,body:o},(e&&t||n)&&this.problem("web_parse_more_methods",r)}return this.eat("}"),e?{elements:e}:a.length>0||!t?{elements:a}:{caption:t.caption,elements:t.body}}methodStart(){var g,f,b,x,v,w,z,I,S,k,P;let e=this.i,t=0;for(;this.toks[e]&&Wr.has(this.toks[e].text);)e++,t++;const n=this.toks[e];if((n==null?void 0:n.kind)!=="id"||xa.has(n.text)||n.text==="new")return;for(e++;((g=this.toks[e])==null?void 0:g.text)==="["&&((f=this.toks[e+1])==null?void 0:f.text)==="]";)e+=2;const a=this.toks[e];if((a==null?void 0:a.kind)!=="id"||((b=this.toks[e+1])==null?void 0:b.text)!=="(")return;let s=0,r=e+1;for(;this.toks[r];r++){const D=this.toks[r].text;if(D==="(")s++;else{if(D===")"&&--s===0)break;if(D===";"||D==="{"||D==="}")break}}let o=r+1;if(((x=this.toks[r])==null?void 0:x.text)===")"&&((v=this.toks[o])==null?void 0:v.text)==="throws")for(o++;((w=this.toks[o])==null?void 0:w.kind)==="id"&&(((z=this.toks[o+1])==null?void 0:z.text)===","||((I=this.toks[o+1])==null?void 0:I.text)==="{"||((S=this.toks[o+1])==null?void 0:S.text)===".");)o+=this.toks[o+1].text==="{"?1:2;const l=this.toks[o],u=((k=this.toks[r])==null?void 0:k.text)===")"&&(l==null?void 0:l.text)==="{";if(!u&&!(t>0&&(l===void 0||this.toks[r]===void 0)))return;const m=((P=this.toks[r])==null?void 0:P.text)===")"?this.toks[r].start:this.src.length,c=this.text(this.toks[e+1].end,m),h=`${this.text(n.start,this.toks[e-1].end).replace(/\s+/g,"")} ${a.text}(${c.replace(/\s*,\s*/g,", ")})`;return this.i=Math.min(u?o:r+1,this.toks.length),{name:a.text,caption:a.text==="main"||!St(h)?void 0:h}}parseMethod(e){return this.is("{")?this.parseBlock().elements:(this.missingAfter(this.prev(),"{"),[])}parseBlock(){const e=this.next(),t=[];for(;this.tok&&!this.is("}")&&!(this.is("case")||this.is("default"));)t.push(...this.parseStatement());const n=this.eat("}");if(n||this.problem("web_parse_missing",e,"}"),t.length===0){const a=(n==null?void 0:n.start)??this.src.length,s=this.comments.find(r=>r.start>e.end&&r.startn.element)}parseStatement(){const e=this.tok;switch(e.kind==="id"?e.text:""){case"if":return[this.parseIf()];case"while":return[this.parseWhile()];case"do":return[this.parseDo()];case"for":return[this.parseFor()];case"switch":return[this.parseSwitch()];case"try":return this.parseTry();case"break":{this.next();const t=this.eat(";");t||this.missingAfter(e,";");const n=this.trailingComment(t??e);return[this.record(Ce(T.aussprung,{textLines:[n]}),e.line,e.line)]}case"else":return this.problem("web_parse_else_without_if",this.next()),[];case"case":case"default":for(this.problem("web_parse_case_outside_switch",this.next());this.tok&&!this.is(":")&&!this.is("->")&&!this.is(";");)this.next();return this.next(),[]}return this.is("{")?this.parseBlock().elements:this.is(";")?(this.next(),[this.record(Ce(T.anweisung),e.line,e.line)]):this.parseSimple()}parseTry(){const e=this.next();let t=e;const n=(r,o)=>{t=this.next();let u=1;for(;this.tok;){const m=this.next();if(t=m,m.kind!=="str"){if(m.text===r)u++;else if(m.text===o&&--u===0)return!0}}return this.missingAfter(t,o),!1};let a=!0;for(this.is("(")&&(a=n("(",")")),a&&this.is("{")?a=n("{","}"):a&&this.missingAfter(t,"{");a&&(this.is("catch")||this.is("finally"));){const r=this.next().text==="catch";t=this.prev(),r&&(this.is("(")?a=n("(",")"):this.missingAfter(t,"(")),a&&this.is("{")?a=n("{","}"):a&&this.missingAfter(t,"{")}const s=this.text(e.start,t.end).replace(/\s+/g," ");return[this.record(Ce(T.anweisung,{textLines:[s]}),e.line,t.line)]}trailingComment(e){const t=this.comments.find(a=>a.start>=e.end&&a.line===e.line),n=this.toks.find(a=>a.start>=e.end);return!t||n&&n.start1;)m.push("");const c=this.parseBody();return this.record(Ce(T.forSchleife,{textLines:m,loopBody:c.elements}),e.line,c.end)}parseSwitch(){const e=this.next(),t=this.parenthesized(e,this.labels.selector),n=[];let a=this.lineOf(this.prev());const s=this.eat("{");if(!s)this.missingAfter(this.prev(),"{");else{for(;this.tok&&!this.is("}");){if(!this.is("case")&&!this.is("default")){this.problem("web_parse_case_outside_switch",this.tok),this.parseStatement();continue}n.push(this.parseCase())}const o=this.eat("}");o||this.problem("web_parse_missing",s,"}"),a=this.lineOf(o??this.prev())}n.some(o=>o.isDefault)||n.push({name:"default",elements:[sn()],isDefault:!0});const r=[...n.filter(o=>!o.isDefault),...n.filter(o=>o.isDefault)].map(({name:o,elements:l})=>({name:o,elements:l}));return this.record(Ce(T.fallauswahl,{textLines:[t.text],cases:r}),e.line,a)}parseCase(){var l;const e=this.next(),t=e.text==="default",n=((l=this.tok)==null?void 0:l.start)??e.end;let a=n;for(;this.tok&&!this.is("->")&&!this.is(":")&&!this.is("{")&&!this.is("}");)a=this.next().end;const s=this.eat("->")??this.eat(":");s||this.missingAfter(this.prev(),"->");let r=t?"default":this.text(n,a),o=[];if((s==null?void 0:s.text)==="->")this.is("{")?(t&&(r=this.trailingComment(this.tok)||r),o=this.parseBlock().elements):this.tok&&!this.is("}")&&(o=this.parseStatement());else{for(t&&s&&(r=this.trailingComment(s)||r);this.tok&&!this.is("case")&&!this.is("default")&&!this.is("}");)o.push(...this.parseStatement());const u=o[o.length-1];(u==null?void 0:u.element.type)===T.aussprung&&u.element.textLines.every(m=>m==="")&&o.pop()}return{name:r,elements:this.finishList(o),isDefault:t}}parseSimple(){const e=this.next();let t=e;const n=e.text==="("||e.text==="["||e.text==="{"?[e.text]:[],a=()=>n.length>0&&n[n.length-1]==="{"&&e.text!=="{";let s;for(;this.tok;){const u=this.tok;if(u.text===";"&&u.kind==="op"&&!a()){s=this.next();break}if(u.line!==t.line&&!a()&&(n.length===0||u.kind==="id"&&xa.has(u.text)||u.text==="}")||u.text==="}"&&n.length===0)break;(u.text==="("||u.text==="["||u.text==="{")&&n.push(u.text),(u.text===")"||u.text==="]"||u.text==="}")&&n.pop(),t=this.next()}s||this.missingAfter(t,";"),this.checkBrackets(e,t);const r=this.text(e.start,t.end),o=this.simpleElement(r);if(!o)return[];const l=this.record(o.element,e.line,t.line);return l.prompt=o.prompt,[l]}checkBrackets(e,t){const n=[],a={")":"(","]":"[","}":"{"},s={"(":")","[":"]","{":"}"};for(let r=this.toks.indexOf(e);r>=0&&rCe(T.anweisung,{textLines:[u]}),a=/^System\.out\.println\s*\(([\s\S]*?)\)?$/.exec(e);if(a){const u=a[1].trim();if(u==="")return{element:n("output: ")};const m=/^"((?:[^"\\]|\\.)*)"$/.exec(u),c=m?UW(m[1]):void 0;return{element:n(`output: ${u}`),prompt:c!==void 0&&!c.includes('"')?c:void 0}}const s=new RegExp(`^(?:(${lm})\\s+)?([A-Za-z_]\\w*(?:\\s*\\[[^\\]]+\\])*)\\s*=\\s*\\w+\\.(nextInt|nextDouble|nextLine|next|nextBoolean)\\s*\\(\\s*\\)$`).exec(e);if(s&&!this.fileScanners.has(e.replace(/^[\s\S]*=\s*(\w+)\.\w+\s*\(\s*\)$/,"$1"))){const u={nextInt:"int",nextDouble:"double",nextLine:"String",next:"String",nextBoolean:"boolean"}[s[3]],m=s[2].replace(/\s+/g,"");if((s[1]===u||!s[1]&&m.includes("["))&&u)return{element:n(`input: ${u} ${m}`)}}const r=new RegExp(`^final\\s+(${lm}\\s+[\\s\\S]*)$`).exec(e);if(r)return{element:n(`const ${r[1]}`)};const o=/^(?:(?:\w+\s+)?\w+\s*=\s*)?([A-Za-z_]\w*)\s*\(/.exec(e);return o&&((l=this.opts.subprograms)!=null&&l.has(o[1]))?{element:Ce(T.aufruf,{textLines:[e]})}:{element:n(e)}}spansFor(e,t=[],n=[]){return e.forEach((a,s)=>{var l;const r=[...t,s],o=this.lines.get(a);o&&n.push({path:r,from:o[0],to:o[1]}),a.loopBody&&this.spansFor(a.loopBody,[...r,0],n),(l=a.cases)==null||l.forEach((u,m)=>this.spansFor(u.elements,[...r,m],n))}),n}isCodePlaceholder(e){return e.text.startsWith("//")&&e.text.slice(2).trim()===this.labels.code}markPlaceholderComments(){for(const e of this.comments)this.isCodePlaceholder(e)&&this.placeholders.push({from:e.start,to:e.end})}};function UW(i){return i.replace(/\\(.)/g,(e,t)=>({n:` -`,r:"\r",t:" "})[t]??t)}function As(i,e,t={}){const n=new QW(i,e,t),{caption:a,elements:s}=n.parseProgram();n.markPlaceholderComments(),n.checkImports(),n.checkScanners(),n.checkTypes(),n.checkCase();const r=n.spansFor(s),o=n.problems.sort((l,u)=>l.from-u.from);return{caption:a,className:n.className,elements:s,spans:r,placeholders:n.placeholders.sort((l,u)=>l.from-u.from),problems:o}}const I0={asClass:!1,withMain:!1},um=i=>/^import\s+[\w.]+(?:\.\*)?\s*;$/.test(i.trim()),mm=i=>i.map(e=>e.trim()===""?"":" "+e);function jg(i,e,t=I0){var u;const n=lg(i,"java",e);let a=n.text.replaceAll(Ki,"").replaceAll(x0,"").split(` +`;)n+=i[n]==="\\"?2:1;i[n]===r?n++:e.push({from:o,to:Math.min(n,i.length),key:"web_parse_unclosed_string",arg:r}),s("str",o,Math.min(n,i.length),l);continue}const u=/^\d[\d_]*(?:\.\d+)?(?:[eE][+-]?\d+)?[lLfFdD]?/.exec(i.slice(n,n+64));if(u){n+=u[0].length,s("num",o,n,l);continue}const m=/^[\p{L}_$][\p{L}\p{N}_$]*/u.exec(i.slice(n,n+256));if(m){n+=m[0].length,s("id",o,n,l);continue}const c=YE.find(d=>i.startsWith(d,n))??r;n+=c.length,s("op",o,n,l)}return t}const xa=new Set(["if","else","for","while","do","switch","case","default","break","return","try"]),Wr=new Set(["public","private","protected","static","final","abstract"]),lm="(?:int|long|short|byte|float|double|boolean|char|String)";let KE=class{constructor(e,t,n){y(this,"toks");y(this,"comments");y(this,"i",0);y(this,"problems",[]);y(this,"placeholders",[]);y(this,"lines",new Map);y(this,"className");y(this,"imports",[]);y(this,"fileScanners",new Set);this.src=e,this.labels=t,this.opts=n;const a=$E(e,this.problems);this.toks=a.filter(s=>s.kind!=="comment"),this.comments=a.filter(s=>s.kind==="comment")}get tok(){return this.toks[this.i]}is(e,t=this.tok){return t!==void 0&&t.text===e&&t.kind!=="str"}next(){return this.toks[this.i++]}eat(e){return this.is(e)?this.next():void 0}prev(){return this.toks[this.i-1]}problem(e,t,n){const a=t??{start:this.src.length,end:this.src.length};this.problems.push({from:a.start,to:Math.max(a.end,a.start+1),key:e,arg:n})}missingAfter(e,t){const n=e?e.end:this.src.length;this.problems.push({from:Math.max(0,n-1),to:n,key:"web_parse_missing",arg:t})}text(e,t){let n="",a=e;for(const s of this.comments)s.end<=e||s.start>=t||(n+=this.src.slice(a,Math.max(a,s.start)),a=Math.max(a,s.end));return n+=this.src.slice(a,Math.max(a,t)),n.replace(/\s*\n\s*/g," ").trim()}slot(e,t,n){const a=this.text(e,t);if(a===n){const s=this.src.indexOf(n,e);return s>=0&&this.placeholders.push({from:s,to:s+n.length}),""}return a}record(e,t,n){return this.lines.set(e,[t,n]),{element:e,from:t,to:n}}lineOf(e){var t;return(e==null?void 0:e.line)??((t=this.toks[this.toks.length-1])==null?void 0:t.line)??0}checkImports(){const e=["File","PrintWriter","FileReader","FileWriter","BufferedReader","IOException","FileNotFoundException"].map(t=>[t,"java.io"]);for(const[t,n]of[["Scanner","java.util"],["Arrays","java.util"],["Files","java.nio.file"],["Path","java.nio.file"],["Paths","java.nio.file"],...e]){const a=this.imports.some(r=>r===`import${n}.${t};`||r===`import${n}.*;`),s=this.toks.find((r,o)=>{var l;return r.kind==="id"&&r.text===t&&(t!=="Arrays"&&n!=="java.nio.file"||((l=this.toks[o+1])==null?void 0:l.text)===".")});if(!a&&s){this.problem("web_parse_missing_import",s,n==="java.util"?`import ${n}.${t};`:`import ${n}.*;`);return}}}checkScanners(){var n;const e=new Set(["next","nextInt","nextDouble","nextLine","nextBoolean","nextLong","nextFloat","hasNext","hasNextInt","hasNextLine","hasNextDouble"]),t=a=>this.toks.some((s,r)=>{const o=this.toks[r-1];return s.kind==="id"&&s.text===a&&!!o&&(o.kind==="id"&&!xa.has(o.text)&&o.text!=="new"||o.text===">"||o.text==="]")});for(let a=0;a{var s;return((s=this.toks[a-1])==null?void 0:s.text)==="class"}).map(n=>n.text));for(let n=0;nthis.toks.some((c,d)=>{var h;return c.text===m&&((h=this.toks[d-1])==null?void 0:h.kind)==="id"&&!xa.has(this.toks[d-1].text)}),n=["println","print","printf"],a=["length","charAt","substring","indexOf","equals","equalsIgnoreCase","compareTo","contains","startsWith","endsWith","toUpperCase","toLowerCase","trim","isEmpty","split","replace","sqrt","pow","abs","max","min","random","round","parseInt","parseDouble","nextInt","nextDouble","nextLine","next","hasNext","hasNextInt","hasNextLine"],s=(m,c)=>c.find(d=>d!==m&&d.toLowerCase()===m.toLowerCase());for(let m=0;mo.text).join(""));continue}const a=this.classStart();if(a!==void 0){this.className??(this.className=a.name),this.i=a.index;const r=this.parseClassBody();e.push(...r.elements),t??(t=r.caption);continue}const s=this.methodStart();if(s){n&&this.problem("web_parse_more_methods",this.tok);const r=this.parseMethod(s);n||(t=s.caption,e.push(...r)),n=!0;continue}if(this.is("}")){this.problem("web_parse_extra",this.next(),"}");continue}e.push(...this.parseStatement())}return{caption:t,elements:this.finishList(e)}}skipPast(e){for(;this.tok&&!this.is(e);)this.next();this.eat(e)}classStart(){var n,a;let e=this.i;for(;this.toks[e]&&Wr.has(this.toks[e].text);)e++;if(((n=this.toks[e])==null?void 0:n.text)!=="class"||((a=this.toks[e+1])==null?void 0:a.kind)!=="id")return;const t=this.toks[e+1].text;for(e+=2;this.toks[e]&&this.toks[e].text!=="{";)e++;return{name:t,index:e+1}}parseClassBody(){let e,t,n=!1;const a=[];for(;this.tok&&!this.is("}");){const s=this.methodStart();if(!s){this.is("{")?a.push(...this.parseBlock().elements):a.push(...this.parseStatement());continue}const r=this.tok,o=this.parseMethod(s);s.name==="main"?e??(e=o):t?n=!0:t={caption:s.caption,body:o},(e&&t||n)&&this.problem("web_parse_more_methods",r)}return this.eat("}"),e?{elements:e}:a.length>0||!t?{elements:a}:{caption:t.caption,elements:t.body}}methodStart(){var g,f,b,x,v,w,z,I,S,k,D;let e=this.i,t=0;for(;this.toks[e]&&Wr.has(this.toks[e].text);)e++,t++;const n=this.toks[e];if((n==null?void 0:n.kind)!=="id"||xa.has(n.text)||n.text==="new")return;for(e++;((g=this.toks[e])==null?void 0:g.text)==="["&&((f=this.toks[e+1])==null?void 0:f.text)==="]";)e+=2;const a=this.toks[e];if((a==null?void 0:a.kind)!=="id"||((b=this.toks[e+1])==null?void 0:b.text)!=="(")return;let s=0,r=e+1;for(;this.toks[r];r++){const P=this.toks[r].text;if(P==="(")s++;else{if(P===")"&&--s===0)break;if(P===";"||P==="{"||P==="}")break}}let o=r+1;if(((x=this.toks[r])==null?void 0:x.text)===")"&&((v=this.toks[o])==null?void 0:v.text)==="throws")for(o++;((w=this.toks[o])==null?void 0:w.kind)==="id"&&(((z=this.toks[o+1])==null?void 0:z.text)===","||((I=this.toks[o+1])==null?void 0:I.text)==="{"||((S=this.toks[o+1])==null?void 0:S.text)===".");)o+=this.toks[o+1].text==="{"?1:2;const l=this.toks[o],u=((k=this.toks[r])==null?void 0:k.text)===")"&&(l==null?void 0:l.text)==="{";if(!u&&!(t>0&&(l===void 0||this.toks[r]===void 0)))return;const m=((D=this.toks[r])==null?void 0:D.text)===")"?this.toks[r].start:this.src.length,c=this.text(this.toks[e+1].end,m),h=`${this.text(n.start,this.toks[e-1].end).replace(/\s+/g,"")} ${a.text}(${c.replace(/\s*,\s*/g,", ")})`;return this.i=Math.min(u?o:r+1,this.toks.length),{name:a.text,caption:a.text==="main"||!St(h)?void 0:h}}parseMethod(e){return this.is("{")?this.parseBlock().elements:(this.missingAfter(this.prev(),"{"),[])}parseBlock(){const e=this.next(),t=[];for(;this.tok&&!this.is("}")&&!(this.is("case")||this.is("default"));)t.push(...this.parseStatement());const n=this.eat("}");if(n||this.problem("web_parse_missing",e,"}"),t.length===0){const a=(n==null?void 0:n.start)??this.src.length,s=this.comments.find(r=>r.start>e.end&&r.startn.element)}parseStatement(){const e=this.tok;switch(e.kind==="id"?e.text:""){case"if":return[this.parseIf()];case"while":return[this.parseWhile()];case"do":return[this.parseDo()];case"for":return[this.parseFor()];case"switch":return[this.parseSwitch()];case"try":return this.parseTry();case"break":{this.next();const t=this.eat(";");t||this.missingAfter(e,";");const n=this.trailingComment(t??e);return[this.record(Ae(T.aussprung,{textLines:[n]}),e.line,e.line)]}case"else":return this.problem("web_parse_else_without_if",this.next()),[];case"case":case"default":for(this.problem("web_parse_case_outside_switch",this.next());this.tok&&!this.is(":")&&!this.is("->")&&!this.is(";");)this.next();return this.next(),[]}return this.is("{")?this.parseBlock().elements:this.is(";")?(this.next(),[this.record(Ae(T.anweisung),e.line,e.line)]):this.parseSimple()}parseTry(){const e=this.next();let t=e;const n=(r,o)=>{t=this.next();let u=1;for(;this.tok;){const m=this.next();if(t=m,m.kind!=="str"){if(m.text===r)u++;else if(m.text===o&&--u===0)return!0}}return this.missingAfter(t,o),!1};let a=!0;for(this.is("(")&&(a=n("(",")")),a&&this.is("{")?a=n("{","}"):a&&this.missingAfter(t,"{");a&&(this.is("catch")||this.is("finally"));){const r=this.next().text==="catch";t=this.prev(),r&&(this.is("(")?a=n("(",")"):this.missingAfter(t,"(")),a&&this.is("{")?a=n("{","}"):a&&this.missingAfter(t,"{")}const s=this.text(e.start,t.end).replace(/\s+/g," ");return[this.record(Ae(T.anweisung,{textLines:[s]}),e.line,t.line)]}trailingComment(e){const t=this.comments.find(a=>a.start>=e.end&&a.line===e.line),n=this.toks.find(a=>a.start>=e.end);return!t||n&&n.start1;)m.push("");const c=this.parseBody();return this.record(Ae(T.forSchleife,{textLines:m,loopBody:c.elements}),e.line,c.end)}parseSwitch(){const e=this.next(),t=this.parenthesized(e,this.labels.selector),n=[];let a=this.lineOf(this.prev());const s=this.eat("{");if(!s)this.missingAfter(this.prev(),"{");else{for(;this.tok&&!this.is("}");){if(!this.is("case")&&!this.is("default")){this.problem("web_parse_case_outside_switch",this.tok),this.parseStatement();continue}n.push(this.parseCase())}const o=this.eat("}");o||this.problem("web_parse_missing",s,"}"),a=this.lineOf(o??this.prev())}n.some(o=>o.isDefault)||n.push({name:"default",elements:[sn()],isDefault:!0});const r=[...n.filter(o=>!o.isDefault),...n.filter(o=>o.isDefault)].map(({name:o,elements:l})=>({name:o,elements:l}));return this.record(Ae(T.fallauswahl,{textLines:[t.text],cases:r}),e.line,a)}parseCase(){var l;const e=this.next(),t=e.text==="default",n=((l=this.tok)==null?void 0:l.start)??e.end;let a=n;for(;this.tok&&!this.is("->")&&!this.is(":")&&!this.is("{")&&!this.is("}");)a=this.next().end;const s=this.eat("->")??this.eat(":");s||this.missingAfter(this.prev(),"->");let r=t?"default":this.text(n,a),o=[];if((s==null?void 0:s.text)==="->")this.is("{")?(t&&(r=this.trailingComment(this.tok)||r),o=this.parseBlock().elements):this.tok&&!this.is("}")&&(o=this.parseStatement());else{for(t&&s&&(r=this.trailingComment(s)||r);this.tok&&!this.is("case")&&!this.is("default")&&!this.is("}");)o.push(...this.parseStatement());const u=o[o.length-1];(u==null?void 0:u.element.type)===T.aussprung&&u.element.textLines.every(m=>m==="")&&o.pop()}return{name:r,elements:this.finishList(o),isDefault:t}}parseSimple(){const e=this.next();let t=e;const n=e.text==="("||e.text==="["||e.text==="{"?[e.text]:[],a=()=>n.length>0&&n[n.length-1]==="{"&&e.text!=="{";let s;for(;this.tok;){const u=this.tok;if(u.text===";"&&u.kind==="op"&&!a()){s=this.next();break}if(u.line!==t.line&&!a()&&(n.length===0||u.kind==="id"&&xa.has(u.text)||u.text==="}")||u.text==="}"&&n.length===0)break;(u.text==="("||u.text==="["||u.text==="{")&&n.push(u.text),(u.text===")"||u.text==="]"||u.text==="}")&&n.pop(),t=this.next()}s||this.missingAfter(t,";"),this.checkBrackets(e,t);const r=this.text(e.start,t.end),o=this.simpleElement(r);if(!o)return[];const l=this.record(o.element,e.line,t.line);return l.prompt=o.prompt,[l]}checkBrackets(e,t){const n=[],a={")":"(","]":"[","}":"{"},s={"(":")","[":"]","{":"}"};for(let r=this.toks.indexOf(e);r>=0&&rAe(T.anweisung,{textLines:[u]}),a=/^System\.out\.println\s*\(([\s\S]*?)\)?$/.exec(e);if(a){const u=a[1].trim();if(u==="")return{element:n("output: ")};const m=/^"((?:[^"\\]|\\.)*)"$/.exec(u),c=m?XE(m[1]):void 0;return{element:n(`output: ${u}`),prompt:c!==void 0&&!c.includes('"')?c:void 0}}const s=new RegExp(`^(?:(${lm})\\s+)?([A-Za-z_]\\w*(?:\\s*\\[[^\\]]+\\])*)\\s*=\\s*\\w+\\.(nextInt|nextDouble|nextLine|next|nextBoolean)\\s*\\(\\s*\\)$`).exec(e);if(s&&!this.fileScanners.has(e.replace(/^[\s\S]*=\s*(\w+)\.\w+\s*\(\s*\)$/,"$1"))){const u={nextInt:"int",nextDouble:"double",nextLine:"String",next:"String",nextBoolean:"boolean"}[s[3]],m=s[2].replace(/\s+/g,"");if((s[1]===u||!s[1]&&m.includes("["))&&u)return{element:n(`input: ${u} ${m}`)}}const r=new RegExp(`^final\\s+(${lm}\\s+[\\s\\S]*)$`).exec(e);if(r)return{element:n(`const ${r[1]}`)};const o=/^(?:(?:\w+\s+)?\w+\s*=\s*)?([A-Za-z_]\w*)\s*\(/.exec(e);return o&&((l=this.opts.subprograms)!=null&&l.has(o[1]))?{element:Ae(T.aufruf,{textLines:[e]})}:{element:n(e)}}spansFor(e,t=[],n=[]){return e.forEach((a,s)=>{var l;const r=[...t,s],o=this.lines.get(a);o&&n.push({path:r,from:o[0],to:o[1]}),a.loopBody&&this.spansFor(a.loopBody,[...r,0],n),(l=a.cases)==null||l.forEach((u,m)=>this.spansFor(u.elements,[...r,m],n))}),n}isCodePlaceholder(e){return e.text.startsWith("//")&&e.text.slice(2).trim()===this.labels.code}markPlaceholderComments(){for(const e of this.comments)this.isCodePlaceholder(e)&&this.placeholders.push({from:e.start,to:e.end})}};function XE(i){return i.replace(/\\(.)/g,(e,t)=>({n:` +`,r:"\r",t:" "})[t]??t)}function Cs(i,e,t={}){const n=new KE(i,e,t),{caption:a,elements:s}=n.parseProgram();n.markPlaceholderComments(),n.checkImports(),n.checkScanners(),n.checkTypes(),n.checkCase();const r=n.spansFor(s),o=n.problems.sort((l,u)=>l.from-u.from);return{caption:a,className:n.className,elements:s,spans:r,placeholders:n.placeholders.sort((l,u)=>l.from-u.from),problems:o}}const I0={asClass:!1,withMain:!1},um=i=>/^import\s+[\w.]+(?:\.\*)?\s*;$/.test(i.trim()),mm=i=>i.map(e=>e.trim()===""?"":" "+e);function jg(i,e,t=I0){var u;const n=lg(i,"java",e);let a=n.text.replaceAll(Ki,"").replaceAll(x0,"").split(` `),s=n.spans;const r=m=>s=s.map(c=>({...c,from:c.from+m,to:c.to+m})),o=St(i.caption)!==void 0,l=[];if(t.withMain&&!o||t.asClass){for(let m=a.findIndex(um);m>=0;m=a.findIndex(um))l.push(a[m].trim()),a.splice(m,1),s=s.map(c=>({...c,from:c.from>m?c.from-1:c.from,to:c.to>m?c.to-1:c.to}));l.length&&((u=a[0])==null?void 0:u.trim())===""&&(a.splice(0,1),s=s.map(m=>({...m,from:m.from>0?m.from-1:m.from,to:m.to>0?m.to-1:m.to}))),l.length&&l.push("")}return t.withMain&&!o&&(a=[`public static void main(String[] args)${rx(i)?" throws Exception":""} {`,...mm(a),"}"],r(1)),t.asClass&&(a=[`public class ${cr(o?"Main":i.caption)} {`,...mm(a),"}"],r(1)),l.length&&(a=[...l,...a],r(l.length)),{text:a.join(` -`),spans:s}}function yi(i,e,t=I0){return jg(i,e,t).text}function Er(i){const e=Cg(i).code;return(e.trim()===""?i:e).replace(/\s+/g,"")}function Cg(i){let e="";for(let t=0;tnew Array(a+1).fill(0));for(let u=n-1;u>=0;u--)for(let m=a-1;m>=0;m--)s[u][m]=t(i[u],e[m])?s[u+1][m+1]+1:Math.max(s[u+1][m],s[u][m+1]);const r=[];let o=0,l=0;for(;o=s[o][l+1])?r.push({kind:"del",a:o++}):r.push({kind:"ins",b:l++});return r}function dm(i,e,t,n,a={},s=I0){const r=yi(t,n,s),o=yi(e,n,s);if(i===o)return r;const l=o.split(` +`),spans:s}}function yi(i,e,t=I0){return jg(i,e,t).text}function Er(i){const e=Ag(i).code;return(e.trim()===""?i:e).replace(/\s+/g,"")}function Ag(i){let e="";for(let t=0;tnew Array(a+1).fill(0));for(let u=n-1;u>=0;u--)for(let m=a-1;m>=0;m--)s[u][m]=t(i[u],e[m])?s[u+1][m+1]+1:Math.max(s[u+1][m],s[u][m+1]);const r=[];let o=0,l=0;for(;o=s[o][l+1])?r.push({kind:"del",a:o++}):r.push({kind:"ins",b:l++});return r}function dm(i,e,t,n,a={},s=I0){const r=yi(t,n,s),o=yi(e,n,s);if(i===o)return r;const l=o.split(` `),u=r.split(` `),m=i.split(` -`),c=new Array(l.length).fill(-1);for(const v of cm(l,m,(w,z)=>Er(w)!==""&&Er(w)===Er(z)))v.kind==="keep"&&(c[v.a]=v.b);const d=[];let h=0,g="";const f=v=>{for(;hw===z))if(v.kind==="keep")c[v.a]>=0&&(f(c[v.a]+1),g="");else if(v.kind==="del"){const w=c[v.a];if(w<0)continue;f(w),g||(g=Cg(m[w]).comment),h=w+1}else{const w=u[v.b];d.push(g&&w.trim()!==""?`${w} ${g}`:w),w.trim()!==""&&(g="")}f(m.length);const b=d.join(` -`),x=As(b,n,a);return yi(Ps(t,x),n,s)===r?b:r}function Ps(i,e){let t=e.caption??(St(i.caption)?"":i.caption);return!e.caption&&e.className&&cr(t)!==e.className&&(t=e.className),{...i,caption:t,elements:Xo(i.elements,e.elements)}}function Xo(i,e){return e.map((t,n)=>{const a=i[n];if(!a||a.type!==t.type)return t;const s={...t,zoomX:a.zoomX,zoomY:a.zoomY};return a.textColor&&(s.textColor=a.textColor),a.backgroundColor&&(s.backgroundColor=a.backgroundColor),t.loopBody&&(s.loopBody=Xo(a.loopBody??[],t.loopBody)),t.cases&&(s.cases=t.cases.map((r,o)=>{var l,u;return{...r,elements:Xo(((u=(l=a.cases)==null?void 0:l[o])==null?void 0:u.elements)??[],r.elements)}})),s})}class YW extends Error{}function $W(i,e){const t=m=>{throw new YW(`${e}: ${m}`)};let n="",a="",s="",r=30;const o=[];let l,u=!1;for(const m of i){const c=m.trim();if(l&&u&&(/^ {4}|^\t/.test(m)||c==="")){l.code+=(l.code?` -`:"")+m.replace(/^( {4}|\t)/,"");continue}if(u=!1,!c)continue;const d=/^(titel|intro|frage|feld|runde|karte|ziel):\s*(.*)$/.exec(c);if(d){const[,h,g]=d;if(h==="runde")l={code:"",map:[],question:s,explanation:""},o.push(l),u=!0;else if(!l)h==="titel"?n=g:h==="intro"?a=g:h==="frage"?s=g:h==="feld"?r=[10,20,30].includes(Number(g))?Number(g):t("„feld:“ ist 10, 20 oder 30 (Zentimeter)."):t(`„${h}:“ gehört in eine Runde.`);else if(h==="frage")l.question=g;else if(h==="karte")l.map=g.split("|").map(f=>f.trim());else if(h==="ziel"){const f=/^(\d+)\s*,\s*(\d+)$/.exec(g);f||t(`„ziel: ${g}“ muss Spalte,Zeile sein, zum Beispiel „ziel: 2,0“.`),l.target={col:Number(f[1]),row:Number(f[2])}}else t(`„${h}:“ gehört vor die erste Runde.`);continue}l&&c.startsWith(">")?l.explanation+=(l.explanation?" ":"")+c.slice(1).trim():t(`Unbekannte Zeile im Spiel: „${c}“`)}return n||t("Das Spiel braucht eine Zeile „titel:“."),o.length||t("Das Spiel braucht mindestens eine „runde:“."),o.forEach((m,c)=>{m.code=m.code.replace(/\n+$/,""),m.code.trim()||t(`Runde ${c+1}: Code fehlt.`),(!m.map.length||m.map.some(d=>d.length!==m.map[0].length))&&t(`Runde ${c+1}: „karte:“ fehlt oder die Zeilen sind verschieden lang.`),m.map.join("").replace(/[^\^> v <).`),/[^.#=rgby^>=m.map.length||m.target.col>=m.map[0].length)&&t(`Runde ${c+1}: „ziel:“ liegt außerhalb der Karte.`),m.question||t(`Runde ${c+1}: keine Frage.`)}),{title:n,intro:a,field:r,rounds:o}}function Ag(i,e){return gg([`raster: ${e/10}`,...i.map].join(` -`))}function KW(i,e,t){const n=e.map[0].length*t,a=e.map.length*t,s=Math.floor((i.x+n/2)/t),r=Math.floor((a/2-i.y)/t);if(!(s<0||r<0||s>=e.map[0].length||r>=e.map.length))return{col:s,row:r}}const XW={condition:"Bedingung",selector:"Wert",code:"Dein Code",start:"Startwert",step:"Schritt",end:"Ende"};function eE(i,e){const t=As(i.code,XW),n=t.problems.map(o=>typeof o=="string"?o:JSON.stringify(o)),a=Ps({caption:"",elements:[]},t),s=Tg(a,void 0,Ag(i,e)),r=s.frames[s.frames.length-1].pose;return{run:s,end:r,cell:KW(r,i,e),problems:n}}const tE=/\[\[(.+?)\]\]/g;function nE(i,e){const t={title:"",task:"",blocks:[]},n=[];let a=!1;for(const s of i){if(/^\s*```/.test(s)){a||n.push([]),a=!a;continue}if(a){n[n.length-1].push(s.replace(/\s+$/,""));continue}const r=s.trim();if(!r)continue;const o=/^([a-zäöü]+):\s*(.*)$/i.exec(r);if(!o)throw new Error(`${e}: Unbekannte Zeile im Lückentext: „${r}“.`);const l=o[2].trim();switch(o[1].toLowerCase()){case"titel":t.title=l;break;case"auftrag":t.task=l;break;case"erklärung":case"erklaerung":t.explanation=l;break;default:throw new Error(`${e}: Unbekannter Schlüssel „${o[1]}“ im Lückentext.`)}}if(a)throw new Error(`${e}: Der Codeblock im Lückentext wird nicht mit \`\`\` geschlossen.`);if(!t.title)throw new Error(`${e}: Ein Lückentext braucht einen Titel.`);if(!n.some(s=>s.some(r=>r.trim())))throw new Error(`${e}: Lückentext „${t.title}“ braucht einen Codeblock.`);if(t.blocks=n.map(s=>{const r=Math.min(...s.filter(o=>o.trim()).map(o=>/^ */.exec(o)[0].length));return s.map(o=>iE(o.slice(r),e,t.title))}),!aE(t).length)throw new Error(`${e}: Lückentext „${t.title}“ braucht mindestens eine Lücke [[…]].`);return t}function iE(i,e,t){const n=[];let a=0;for(const s of i.matchAll(tE)){s.index>a&&n.push(i.slice(a,s.index));const r=s[1].split(/\s+\|\s+/).map(o=>o.trim()).filter(Boolean);if(!r.length)throw new Error(`${e}: Leere Lücke im Lückentext „${t}“.`);n.push({answers:r}),a=s.index+s[0].length}if(atypeof s=="string"&&(s.includes("[[")||s.includes("]]"))))throw new Error(`${e}: Unvollständige Lücke im Lückentext „${t}“: „${i}“.`);return n}function aE(i){return i.blocks.flat().flatMap(e=>e.flatMap(t=>typeof t=="string"?[]:[t.answers]))}function sE(i,e){const t=n=>n.replace(/\s+/g,"");return t(e)!==""&&i.some(n=>t(n)===t(e))}const hm={start:"oval",ende:"oval",anweisung:"rechteck",eingabe:"parallelogramm",ausgabe:"parallelogramm",frage:"raute"};function rE(i,e){const t={title:"",task:"",nodes:[]},n=[];for(const a of i){const s=a.trim();if(!s)continue;const r=/^([a-zäöü]+):\s*(.*)$/i.exec(s);if(!r)throw new Error(`${e}: Unbekannte Zeile im PAP: „${s}“.`);const o=r[1].toLowerCase(),l=r[2].trim();if(o==="titel")t.title=l;else if(o==="auftrag")t.task=l;else if(o==="erklärung"||o==="erklaerung")t.explanation=l;else if(o==="legende")t.legend=/^(ja|yes|true|sim)$/i.test(l);else if(o in hm){const[u,m]=l.split(/\s+\|\s+/);if(!u)throw new Error(`${e}: Leeres Element im PAP: „${s}“.`);const c={shape:hm[o],text:u.trim()};if(t.nodes.push(c),o!=="frage"){if(m)throw new Error(`${e}: Nur eine Frage hat einen zweiten Ausgang: „${s}“.`);continue}const d=/^(ja|nein)\s*(->|:)\s*(.+)$/i.exec(m??"");if(!d)throw new Error(`${e}: Eine Frage braucht „| nein -> Text“ oder „| nein: Text“: „${s}“.`);c.sideExit=d[1].toLowerCase(),d[2]===":"?(c.side=t.nodes.length,t.nodes.push({shape:"rechteck",text:d[3].trim(),isSide:!0})):n.push({node:t.nodes.length-1,target:d[3].trim(),line:s})}else throw new Error(`${e}: Unbekannter Schlüssel „${r[1]}“ im PAP.`)}for(const a of n){const s=t.nodes.findIndex((r,o)=>o{if(n.isSide)return;const s=dE(n.shape);(i.nodes.some(r=>r.backTo===a)||n.side!==void 0)&&(t+=12),e[a]={x:lE,y:t+s/2,w:n.shape==="raute"?170:n.shape==="oval"?110:uE,h:s},n.side!==void 0&&(e[n.side]={x:mE,y:t+s/2,w:cE,h:40}),t+=s+gm}),{boxes:e,height:t-gm+10}}function Pg(i,e){if((r=>r.length*6.6<=e)(i))return[i];const n=i.split(" ");let a=[i],s=1/0;for(let r=1;ru.length));lEr(w)!==""&&Er(w)===Er(z)))v.kind==="keep"&&(c[v.a]=v.b);const d=[];let h=0,g="";const f=v=>{for(;hw===z))if(v.kind==="keep")c[v.a]>=0&&(f(c[v.a]+1),g="");else if(v.kind==="del"){const w=c[v.a];if(w<0)continue;f(w),g||(g=Ag(m[w]).comment),h=w+1}else{const w=u[v.b];d.push(g&&w.trim()!==""?`${w} ${g}`:w),w.trim()!==""&&(g="")}f(m.length);const b=d.join(` +`),x=Cs(b,n,a);return yi(Ds(t,x),n,s)===r?b:r}function Ds(i,e){let t=e.caption??(St(i.caption)?"":i.caption);return!e.caption&&e.className&&cr(t)!==e.className&&(t=e.className),{...i,caption:t,elements:Xo(i.elements,e.elements)}}function Xo(i,e){return e.map((t,n)=>{const a=i[n];if(!a||a.type!==t.type)return t;const s={...t,zoomX:a.zoomX,zoomY:a.zoomY};return a.textColor&&(s.textColor=a.textColor),a.backgroundColor&&(s.backgroundColor=a.backgroundColor),t.loopBody&&(s.loopBody=Xo(a.loopBody??[],t.loopBody)),t.cases&&(s.cases=t.cases.map((r,o)=>{var l,u;return{...r,elements:Xo(((u=(l=a.cases)==null?void 0:l[o])==null?void 0:u.elements)??[],r.elements)}})),s})}class eN extends Error{}function tN(i,e){const t=m=>{throw new eN(`${e}: ${m}`)};let n="",a="",s="",r=30;const o=[];let l,u=!1;for(const m of i){const c=m.trim();if(l&&u&&(/^ {4}|^\t/.test(m)||c==="")){l.code+=(l.code?` +`:"")+m.replace(/^( {4}|\t)/,"");continue}if(u=!1,!c)continue;const d=/^(titel|intro|frage|feld|runde|karte|ziel):\s*(.*)$/.exec(c);if(d){const[,h,g]=d;if(h==="runde")l={code:"",map:[],question:s,explanation:""},o.push(l),u=!0;else if(!l)h==="titel"?n=g:h==="intro"?a=g:h==="frage"?s=g:h==="feld"?r=[10,20,30].includes(Number(g))?Number(g):t("„feld:“ ist 10, 20 oder 30 (Zentimeter)."):t(`„${h}:“ gehört in eine Runde.`);else if(h==="frage")l.question=g;else if(h==="karte")l.map=g.split("|").map(f=>f.trim());else if(h==="ziel"){const f=/^(\d+)\s*,\s*(\d+)$/.exec(g);f||t(`„ziel: ${g}“ muss Spalte,Zeile sein, zum Beispiel „ziel: 2,0“.`),l.target={col:Number(f[1]),row:Number(f[2])}}else t(`„${h}:“ gehört vor die erste Runde.`);continue}l&&c.startsWith(">")?l.explanation+=(l.explanation?" ":"")+c.slice(1).trim():t(`Unbekannte Zeile im Spiel: „${c}“`)}return n||t("Das Spiel braucht eine Zeile „titel:“."),o.length||t("Das Spiel braucht mindestens eine „runde:“."),o.forEach((m,c)=>{m.code=m.code.replace(/\n+$/,""),m.code.trim()||t(`Runde ${c+1}: Code fehlt.`),(!m.map.length||m.map.some(d=>d.length!==m.map[0].length))&&t(`Runde ${c+1}: „karte:“ fehlt oder die Zeilen sind verschieden lang.`),m.map.join("").replace(/[^\^> v <).`),/[^.#=rgby^>=m.map.length||m.target.col>=m.map[0].length)&&t(`Runde ${c+1}: „ziel:“ liegt außerhalb der Karte.`),m.question||t(`Runde ${c+1}: keine Frage.`)}),{title:n,intro:a,field:r,rounds:o}}function Cg(i,e){return gg([`raster: ${e/10}`,...i.map].join(` +`))}function nN(i,e,t){const n=e.map[0].length*t,a=e.map.length*t,s=Math.floor((i.x+n/2)/t),r=Math.floor((a/2-i.y)/t);if(!(s<0||r<0||s>=e.map[0].length||r>=e.map.length))return{col:s,row:r}}const iN={condition:"Bedingung",selector:"Wert",code:"Dein Code",start:"Startwert",step:"Schritt",end:"Ende"};function aN(i,e){const t=Cs(i.code,iN),n=t.problems.map(o=>typeof o=="string"?o:JSON.stringify(o)),a=Ds({caption:"",elements:[]},t),s=Tg(a,void 0,Cg(i,e)),r=s.frames[s.frames.length-1].pose;return{run:s,end:r,cell:nN(r,i,e),problems:n}}const sN=/\[\[(.+?)\]\]/g;function rN(i,e){const t={title:"",task:"",blocks:[]},n=[];let a=!1;for(const s of i){if(/^\s*```/.test(s)){a||n.push([]),a=!a;continue}if(a){n[n.length-1].push(s.replace(/\s+$/,""));continue}const r=s.trim();if(!r)continue;const o=/^([a-zäöü]+):\s*(.*)$/i.exec(r);if(!o)throw new Error(`${e}: Unbekannte Zeile im Lückentext: „${r}“.`);const l=o[2].trim();switch(o[1].toLowerCase()){case"titel":t.title=l;break;case"auftrag":t.task=l;break;case"erklärung":case"erklaerung":t.explanation=l;break;default:throw new Error(`${e}: Unbekannter Schlüssel „${o[1]}“ im Lückentext.`)}}if(a)throw new Error(`${e}: Der Codeblock im Lückentext wird nicht mit \`\`\` geschlossen.`);if(!t.title)throw new Error(`${e}: Ein Lückentext braucht einen Titel.`);if(!n.some(s=>s.some(r=>r.trim())))throw new Error(`${e}: Lückentext „${t.title}“ braucht einen Codeblock.`);if(t.blocks=n.map(s=>{const r=Math.min(...s.filter(o=>o.trim()).map(o=>/^ */.exec(o)[0].length));return s.map(o=>oN(o.slice(r),e,t.title))}),!lN(t).length)throw new Error(`${e}: Lückentext „${t.title}“ braucht mindestens eine Lücke [[…]].`);return t}function oN(i,e,t){const n=[];let a=0;for(const s of i.matchAll(sN)){s.index>a&&n.push(i.slice(a,s.index));const r=s[1].split(/\s+\|\s+/).map(o=>o.trim()).filter(Boolean);if(!r.length)throw new Error(`${e}: Leere Lücke im Lückentext „${t}“.`);n.push({answers:r}),a=s.index+s[0].length}if(atypeof s=="string"&&(s.includes("[[")||s.includes("]]"))))throw new Error(`${e}: Unvollständige Lücke im Lückentext „${t}“: „${i}“.`);return n}function lN(i){return i.blocks.flat().flatMap(e=>e.flatMap(t=>typeof t=="string"?[]:[t.answers]))}function uN(i,e){const t=n=>n.replace(/\s+/g,"");return t(e)!==""&&i.some(n=>t(n)===t(e))}const hm={start:"oval",ende:"oval",anweisung:"rechteck",eingabe:"parallelogramm",ausgabe:"parallelogramm",frage:"raute"};function mN(i,e){const t={title:"",task:"",nodes:[]},n=[];for(const a of i){const s=a.trim();if(!s)continue;const r=/^([a-zäöü]+):\s*(.*)$/i.exec(s);if(!r)throw new Error(`${e}: Unbekannte Zeile im PAP: „${s}“.`);const o=r[1].toLowerCase(),l=r[2].trim();if(o==="titel")t.title=l;else if(o==="auftrag")t.task=l;else if(o==="erklärung"||o==="erklaerung")t.explanation=l;else if(o==="legende")t.legend=/^(ja|yes|true|sim)$/i.test(l);else if(o in hm){const[u,m]=l.split(/\s+\|\s+/);if(!u)throw new Error(`${e}: Leeres Element im PAP: „${s}“.`);const c={shape:hm[o],text:u.trim()};if(t.nodes.push(c),o!=="frage"){if(m)throw new Error(`${e}: Nur eine Frage hat einen zweiten Ausgang: „${s}“.`);continue}const d=/^(ja|nein)\s*(->|:)\s*(.+)$/i.exec(m??"");if(!d)throw new Error(`${e}: Eine Frage braucht „| nein -> Text“ oder „| nein: Text“: „${s}“.`);c.sideExit=d[1].toLowerCase(),d[2]===":"?(c.side=t.nodes.length,t.nodes.push({shape:"rechteck",text:d[3].trim(),isSide:!0})):n.push({node:t.nodes.length-1,target:d[3].trim(),line:s})}else throw new Error(`${e}: Unbekannter Schlüssel „${r[1]}“ im PAP.`)}for(const a of n){const s=t.nodes.findIndex((r,o)=>o{if(n.isSide)return;const s=fN(n.shape);(i.nodes.some(r=>r.backTo===a)||n.side!==void 0)&&(t+=12),e[a]={x:dN,y:t+s/2,w:n.shape==="raute"?170:n.shape==="oval"?110:hN,h:s},n.side!==void 0&&(e[n.side]={x:gN,y:t+s/2,w:pN,h:40}),t+=s+gm}),{boxes:e,height:t-gm+10}}function Dg(i,e){if((r=>r.length*6.6<=e)(i))return[i];const n=i.split(" ");let a=[i],s=1/0;for(let r=1;ru.length));l|→)\s*/);if(t.length!==2)throw new ie(`${e}: Test „${i}“ braucht genau ein „->“.`);const n=(a,s)=>a.trim()===""||a.trim()==="-"?[]:a.split(s).map(r=>r.trim());return{inputs:n(t[0],/\s*,\s*/),expected:n(t[1],/\s*\|\s*/)}}function pE(i){const e=/^(.*?)\s*(?:->|→)\s*(.*)$/.exec(i.trim());if(!e)throw new Error(`„messwerte: ${i}“ braucht ein „->“.`);const t={};for(const n of e[1].split(/\s*,\s*/).filter(Boolean)){const a=/^(\w+)\s*=\s*(.+)$/.exec(n);if(!a||!(a[1]in Pt))throw new Error(`Unbekannter Sensor in „${n}“.`);t[a[1]]=a[2].split("/").map(s=>{const r=s.trim();if(r==="true"||r==="false")return r==="true";if(/^-?\d+(\.\d+)?$/.test(r))return Number(r);if(typeof Pt[a[1]].simulated=="string")return r;throw new Error(`Messwert „${r}“ ist keine Zahl und nicht true/false.`)})}return Og({inputs:[],expected:[],sensors:t},e[2])}function Og(i,e){const t=[];e=e.replace(/\bscreen\s+("(?:[^"\\]|\\.)*")/u,(n,a)=>(i.screen=JSON.parse(a),""));for(const n of e.split(/\s*,\s*/).filter(Boolean))n==="ledOn"||n==="ledOff"?i.led=n==="ledOn":n==="tone"||n==="noTone"?i.tone=n==="tone":n==="none"?i.drive=[]:n==="drives"?i.drives=!0:t.push(n);return t.length&&(i.drive=bs(Wh(t.join(", ")))),i}function fE(i,e,t){const n={id:i,title:"",task:"",tests:[],requires:[],hints:[],subprograms:[]};let a;for(const s of e){const r=/^(titel|auftrag|start|test|datei|fahrt|befehle|welt|messwerte|schleifentiefe|braucht|tipp|lösung|loesung|unterprogramm|code|bereich):\s*(.*)$/i.exec(s.trim());if(r){const[,o,l]=r;switch(a=void 0,o.toLowerCase()){case"titel":n.title=l;break;case"auftrag":n.task=l,a="task";break;case"start":n.start=l;break;case"test":n.tests.push(gE(l,t));break;case"datei":{const u=/^([\w.-]+)\s*(?:->|→)\s*(.*)$/.exec(l.trim());if(!u||!n.tests.length)throw new ie(`${t}: Übung „${i}“: „datei:“ braucht vorher einen Test und die Form „name.txt -> Zeile | Zeile“.`);const m=n.tests[n.tests.length-1];m.files=[...m.files??[],{name:u[1],lines:u[2].trim()===""?[]:u[2].split(/\s*\|\s*/).map(c=>c.trim())}];break}case"fahrt":try{n.tests.push({inputs:[],expected:[],drive:bs(Wh(l))})}catch(u){throw new ie(`${t}: Übung „${i}“: ${u.message}`)}break;case"welt":{const u=/^([\w-]+)\s*(?:->|→)\s*(.+)$/.exec(l.trim());if(u){try{n.tests.push(Og({inputs:[],expected:[],world:u[1]},u[2]))}catch(m){throw new ie(`${t}: Übung „${i}“: ${m.message}`)}break}for(const m of l.split(/\s*,\s*/).filter(Boolean)){if(!/^[\w-]+$/.test(m))throw new ie(`${t}: Übung „${i}“: Weltname „${m}“ (nur Buchstaben, Ziffern, -).`);n.tests.push({inputs:[],expected:[],world:m})}break}case"befehle":try{n.tests.push({inputs:[],expected:[],actions:ub(l)})}catch(u){throw new ie(`${t}: Übung „${i}“: ${u.message}`)}break;case"messwerte":try{n.tests.push(pE(l))}catch(u){throw new ie(`${t}: Übung „${i}“: ${u.message}`)}break;case"schleifentiefe":if(n.loopDepth=Number(l),!Number.isInteger(n.loopDepth)||n.loopDepth<1)throw new ie(`${t}: Übung „${i}“: „schleifentiefe:“ braucht eine Zahl ab 1.`);break;case"braucht":n.requires.push(...l.split(/\s*,\s*/).filter(Boolean));break;case"tipp":n.hints.push(l),a="hint";break;case"lösung":case"loesung":n.solution=l;break;case"unterprogramm":n.subprograms.push(...l.split(/\s*,\s*/).filter(Boolean));break;case"code":if(l.trim().toLowerCase()!=="java")throw new ie(`${t}: Übung „${i}“: „code:“ kennt nur „java“.`);n.code="java";break;case"bereich":{const u=l.trim().toLowerCase();if(u!=="struktogramm"&&u!=="code"&&u!=="beide")throw new ie(`${t}: Übung „${i}“: „bereich:“ kennt nur „struktogramm“, „code“ oder „beide“.`);n.area=u;break}}}else a&&s.trim()!==""?a==="task"?n.task+=` +`).slice(t[0].length)}}function xN(i,e){const t=i.split(/\s*(?:->|→)\s*/);if(t.length!==2)throw new ie(`${e}: Test „${i}“ braucht genau ein „->“.`);const n=(a,s)=>a.trim()===""||a.trim()==="-"?[]:a.split(s).map(r=>r.trim());return{inputs:n(t[0],/\s*,\s*/),expected:n(t[1],/\s*\|\s*/)}}function vN(i){const e=/^(.*?)\s*(?:->|→)\s*(.*)$/.exec(i.trim());if(!e)throw new Error(`„messwerte: ${i}“ braucht ein „->“.`);const t={};for(const n of e[1].split(/\s*,\s*/).filter(Boolean)){const a=/^(\w+)\s*=\s*(.+)$/.exec(n);if(!a||!(a[1]in Dt))throw new Error(`Unbekannter Sensor in „${n}“.`);t[a[1]]=a[2].split("/").map(s=>{const r=s.trim();if(r==="true"||r==="false")return r==="true";if(/^-?\d+(\.\d+)?$/.test(r))return Number(r);if(typeof Dt[a[1]].simulated=="string")return r;throw new Error(`Messwert „${r}“ ist keine Zahl und nicht true/false.`)})}return Og({inputs:[],expected:[],sensors:t},e[2])}function Og(i,e){const t=[];e=e.replace(/\bscreen\s+("(?:[^"\\]|\\.)*")/u,(n,a)=>(i.screen=JSON.parse(a),""));for(const n of e.split(/\s*,\s*/).filter(Boolean))n==="ledOn"||n==="ledOff"?i.led=n==="ledOn":n==="tone"||n==="noTone"?i.tone=n==="tone":n==="none"?i.drive=[]:n==="drives"?i.drives=!0:t.push(n);return t.length&&(i.drive=bs(Wh(t.join(", ")))),i}function yN(i,e,t){const n={id:i,title:"",task:"",tests:[],requires:[],hints:[],subprograms:[]};let a;for(const s of e){const r=/^(titel|auftrag|start|test|datei|fahrt|befehle|welt|messwerte|schleifentiefe|braucht|tipp|lösung|loesung|unterprogramm|code|bereich):\s*(.*)$/i.exec(s.trim());if(r){const[,o,l]=r;switch(a=void 0,o.toLowerCase()){case"titel":n.title=l;break;case"auftrag":n.task=l,a="task";break;case"start":n.start=l;break;case"test":n.tests.push(xN(l,t));break;case"datei":{const u=/^([\w.-]+)\s*(?:->|→)\s*(.*)$/.exec(l.trim());if(!u||!n.tests.length)throw new ie(`${t}: Übung „${i}“: „datei:“ braucht vorher einen Test und die Form „name.txt -> Zeile | Zeile“.`);const m=n.tests[n.tests.length-1];m.files=[...m.files??[],{name:u[1],lines:u[2].trim()===""?[]:u[2].split(/\s*\|\s*/).map(c=>c.trim())}];break}case"fahrt":try{n.tests.push({inputs:[],expected:[],drive:bs(Wh(l))})}catch(u){throw new ie(`${t}: Übung „${i}“: ${u.message}`)}break;case"welt":{const u=/^([\w-]+)\s*(?:->|→)\s*(.+)$/.exec(l.trim());if(u){try{n.tests.push(Og({inputs:[],expected:[],world:u[1]},u[2]))}catch(m){throw new ie(`${t}: Übung „${i}“: ${m.message}`)}break}for(const m of l.split(/\s*,\s*/).filter(Boolean)){if(!/^[\w-]+$/.test(m))throw new ie(`${t}: Übung „${i}“: Weltname „${m}“ (nur Buchstaben, Ziffern, -).`);n.tests.push({inputs:[],expected:[],world:m})}break}case"befehle":try{n.tests.push({inputs:[],expected:[],actions:ub(l)})}catch(u){throw new ie(`${t}: Übung „${i}“: ${u.message}`)}break;case"messwerte":try{n.tests.push(vN(l))}catch(u){throw new ie(`${t}: Übung „${i}“: ${u.message}`)}break;case"schleifentiefe":if(n.loopDepth=Number(l),!Number.isInteger(n.loopDepth)||n.loopDepth<1)throw new ie(`${t}: Übung „${i}“: „schleifentiefe:“ braucht eine Zahl ab 1.`);break;case"braucht":n.requires.push(...l.split(/\s*,\s*/).filter(Boolean));break;case"tipp":n.hints.push(l),a="hint";break;case"lösung":case"loesung":n.solution=l;break;case"unterprogramm":n.subprograms.push(...l.split(/\s*,\s*/).filter(Boolean));break;case"code":if(l.trim().toLowerCase()!=="java")throw new ie(`${t}: Übung „${i}“: „code:“ kennt nur „java“.`);n.code="java";break;case"bereich":{const u=l.trim().toLowerCase();if(u!=="struktogramm"&&u!=="code"&&u!=="beide")throw new ie(`${t}: Übung „${i}“: „bereich:“ kennt nur „struktogramm“, „code“ oder „beide“.`);n.area=u;break}}}else a&&s.trim()!==""?a==="task"?n.task+=` `+s.trim():n.hints[n.hints.length-1]+=` `+s.trim():s.trim()===""&&a==="task"&&(n.task+=` -`)}if(!n.title)throw new ie(`${t}: Übung „${i}“ hat keinen Titel.`);if(!n.task.trim())throw new ie(`${t}: Übung „${i}“ hat keinen Auftrag.`);return n.task=n.task.trim(),n}function bE(i,e){const t=[];for(const n of i){const a=n.trim();if(a.startsWith("?"))t.push({question:a.slice(1).trim(),options:[]});else if(/^- \[[ xX]\]/.test(a)){const s=t.at(-1);if(!s)throw new ie(`${e}: Antwort ohne Frage im Quiz.`);s.options.push({text:a.slice(5).trim(),correct:a[3].toLowerCase()==="x"})}else if(a.startsWith("= ")){const s=t.at(-1),r=/^=\s+(.+?)\s+->\s+(.+)$/.exec(a);if(!s||!r)throw new ie(`${e}: Zuordnung „${a}“ braucht die Form „= links -> rechts“ nach einer Frage.`);(s.pairs??(s.pairs=[])).push({left:r[1].trim(),right:r[2].trim()})}else if(a.startsWith("→")){const s=t.at(-1);if(!s)throw new ie(`${e}: „→ Schritt“ ohne Frage im Quiz.`);s.ref=a.slice(1).trim()}else if(a.startsWith(">")){const s=t.at(-1);s&&(s.explanation=((s.explanation?s.explanation+" ":"")+a.slice(1).trim()).trim())}}for(const n of t){if(n.pairs){const a=new Set(n.pairs.map(s=>s.right));if(n.options.length>0||n.pairs.length<2||a.size!==n.pairs.length)throw new ie(`${e}: Zuordnung „${n.question}“ braucht mindestens zwei Paare mit verschiedenen rechten Seiten und keine Antworten.`);continue}if(n.options.length<2||!n.options.some(a=>a.correct))throw new ie(`${e}: Quizfrage „${n.question}“ braucht mindestens zwei Antworten, davon eine richtige.`)}return t}function Mg(i,e){const t=[],n=i.split(` +`)}if(!n.title)throw new ie(`${t}: Übung „${i}“ hat keinen Titel.`);if(!n.task.trim())throw new ie(`${t}: Übung „${i}“ hat keinen Auftrag.`);return n.task=n.task.trim(),n}function wN(i,e){const t=[];for(const n of i){const a=n.trim();if(a.startsWith("?"))t.push({question:a.slice(1).trim(),options:[]});else if(/^- \[[ xX]\]/.test(a)){const s=t.at(-1);if(!s)throw new ie(`${e}: Antwort ohne Frage im Quiz.`);s.options.push({text:a.slice(5).trim(),correct:a[3].toLowerCase()==="x"})}else if(a.startsWith("= ")){const s=t.at(-1),r=/^=\s+(.+?)\s+->\s+(.+)$/.exec(a);if(!s||!r)throw new ie(`${e}: Zuordnung „${a}“ braucht die Form „= links -> rechts“ nach einer Frage.`);(s.pairs??(s.pairs=[])).push({left:r[1].trim(),right:r[2].trim()})}else if(a.startsWith("→")){const s=t.at(-1);if(!s)throw new ie(`${e}: „→ Schritt“ ohne Frage im Quiz.`);s.ref=a.slice(1).trim()}else if(a.startsWith(">")){const s=t.at(-1);s&&(s.explanation=((s.explanation?s.explanation+" ":"")+a.slice(1).trim()).trim())}}for(const n of t){if(n.pairs){const a=new Set(n.pairs.map(s=>s.right));if(n.options.length>0||n.pairs.length<2||a.size!==n.pairs.length)throw new ie(`${e}: Zuordnung „${n.question}“ braucht mindestens zwei Paare mit verschiedenen rechten Seiten und keine Antworten.`);continue}if(n.options.length<2||!n.options.some(a=>a.correct))throw new ie(`${e}: Quizfrage „${n.question}“ braucht mindestens zwei Antworten, davon eine richtige.`)}return t}function Mg(i,e){const t=[],n=i.split(` `);let a=[];const s=()=>{const r=a.join(` -`).trim();r&&t.push({kind:"markdown",text:r}),a=[]};for(let r=0;r=n.length)throw new ie(`${e}: Block „::: ${o[1]}“ wird nicht mit „:::“ geschlossen.`);const m=o[1].toLowerCase(),c=o[2].trim();switch(m){case"diagramm":if(!c)throw new ie(`${e}: „::: diagramm“ braucht einen Dateinamen.`);t.push({kind:"diagram",file:c,caption:l.join(" ").trim()});break;case"übung":case"uebung":if(!c)throw new ie(`${e}: „::: übung“ braucht eine Kennung.`);t.push({kind:"exercise",exercise:fE(c,l,e)});break;case"checkliste":t.push({kind:"checklist",items:l.map(d=>d.trim()).filter(d=>d.startsWith("- ")).map(d=>xE(d.slice(2).trim()))});break;case"kompetenzen":t.push({kind:"competences",items:l.map(d=>d.trim()).filter(d=>d.startsWith("- ")).map(d=>d.slice(2).trim())});break;case"quiz":t.push({kind:"quiz",questions:bE(l,e)});break;case"bild":if(!c)throw new ie(`${e}: „::: bild“ braucht einen Dateinamen.`);t.push({kind:"images",files:c.split(/\s+/),caption:l.join(" ").trim()});break;case"grafik":if(!c)throw new ie(`${e}: „::: grafik“ braucht einen Dateinamen.`);{const[d,h]=c.split(/\s+/),g=h==="animiert"?{animated:!0}:h?{labeled:h}:{};t.push({kind:"graphic",file:d,...g,caption:l.join(" ").trim()})}break;case"angeberwissen":t.push({kind:"brag",text:l.join(` -`).trim()});break;case"spiel":try{if(DW(c))t.push({kind:"roundGame",game:BW(c,l,e)});else if(c==="prinzessin")t.push({kind:"rescueGame",game:EW(l,e)});else if(c==="fahrt")t.push({kind:"driveGame",game:$W(l,e)});else if(c==="kreuzwort")t.push({kind:"crosswordGame",game:FW(l,e)});else{if(c)throw new ie(`${e}: Unbekanntes Spiel „${c}“ (zuhoerer, vertrag, layout, bombe, frage, reihenfolge, prinzessin, fahrt oder kreuzwort).`);t.push({kind:"game",game:Yx(l,e)})}}catch(d){throw new ie(d.message)}break;case"lückentext":case"lueckentext":try{t.push({kind:"cloze",cloze:nE(l,e)})}catch(d){throw new ie(d.message)}break;case"pap":try{t.push({kind:"pap",pap:rE(l,e)})}catch(d){throw new ie(d.message)}break;case"ludwig":t.push({kind:"brag",text:l.join(` +`).trim();r&&t.push({kind:"markdown",text:r}),a=[]};for(let r=0;r=n.length)throw new ie(`${e}: Block „::: ${o[1]}“ wird nicht mit „:::“ geschlossen.`);const m=o[1].toLowerCase(),c=o[2].trim();switch(m){case"diagramm":if(!c)throw new ie(`${e}: „::: diagramm“ braucht einen Dateinamen.`);t.push({kind:"diagram",file:c,caption:l.join(" ").trim()});break;case"übung":case"uebung":if(!c)throw new ie(`${e}: „::: übung“ braucht eine Kennung.`);t.push({kind:"exercise",exercise:yN(c,l,e)});break;case"checkliste":t.push({kind:"checklist",items:l.map(d=>d.trim()).filter(d=>d.startsWith("- ")).map(d=>zN(d.slice(2).trim()))});break;case"kompetenzen":t.push({kind:"competences",items:l.map(d=>d.trim()).filter(d=>d.startsWith("- ")).map(d=>d.slice(2).trim())});break;case"quiz":t.push({kind:"quiz",questions:wN(l,e)});break;case"bild":if(!c)throw new ie(`${e}: „::: bild“ braucht einen Dateinamen.`);t.push({kind:"images",files:c.split(/\s+/),caption:l.join(" ").trim()});break;case"grafik":if(!c)throw new ie(`${e}: „::: grafik“ braucht einen Dateinamen.`);{const[d,h]=c.split(/\s+/),g=h==="animiert"?{animated:!0}:h?{labeled:h}:{};t.push({kind:"graphic",file:d,...g,caption:l.join(" ").trim()})}break;case"angeberwissen":t.push({kind:"brag",text:l.join(` +`).trim()});break;case"spiel":try{if(ZE(c))t.push({kind:"roundGame",game:LE(c,l,e)});else if(c==="prinzessin")t.push({kind:"rescueGame",game:JE(l,e)});else if(c==="fahrt")t.push({kind:"driveGame",game:tN(l,e)});else if(c==="kreuzwort")t.push({kind:"crosswordGame",game:HE(l,e)});else{if(c)throw new ie(`${e}: Unbekanntes Spiel „${c}“ (zuhoerer, vertrag, layout, bombe, frage, reihenfolge, prinzessin, fahrt oder kreuzwort).`);t.push({kind:"game",game:Yx(l,e)})}}catch(d){throw new ie(d.message)}break;case"lückentext":case"lueckentext":try{t.push({kind:"cloze",cloze:rN(l,e)})}catch(d){throw new ie(d.message)}break;case"pap":try{t.push({kind:"pap",pap:mN(l,e)})}catch(d){throw new ie(d.message)}break;case"ludwig":t.push({kind:"brag",text:l.join(` `).trim(),tip:!0});break;case"caesar":{const d=c?Number(c):3;if(!Number.isInteger(d)||d<0||d>25)throw new ie(`${e}: „::: caesar“ braucht einen Schlüssel von 0 bis 25.`);t.push({kind:"caesar",key:d,text:l.join(" ").trim()});break}case"mbot2":{const d={kind:"robotModel",focus:[]};for(const h of l.filter(g=>g.trim())){const g=/^\s*(fokus|focus|ansicht|view|drehen|spin):\s*(.*)$/i.exec(h);if(!g)throw new ie(`${e}: „::: mbot2“ kennt nur Zeilen „fokus:“, „ansicht:“ und „drehen:“.`);const f=g[1].toLowerCase();f==="fokus"||f==="focus"?d.focus=pm(g[2],e):f==="ansicht"||f==="view"?d.view=g[2].trim().toLowerCase():d.spin=/^(ja|yes|true|sim)$/i.test(g[2].trim())}t.push(d);break}case"mbot2quiz":{const d={kind:"robotQuiz",tasks:[]};for(const h of l.filter(g=>g.trim())){const g=/^\s*-\s*(\w+)\s*:\s*(.+)$/.exec(h),f=/^\s*(fertig|done):\s*(.+)$/i.exec(h);if(g)d.tasks.push({part:pm(g[1],e)[0],question:g[2].trim()});else if(f)d.done=f[2].trim();else throw new ie(`${e}: „::: mbot2quiz“ braucht Zeilen „- teil: Frage“ und optional „fertig: Text“.`)}if(!d.tasks.length)throw new ie(`${e}: „::: mbot2quiz“ hat keine Fragen.`);t.push(d);break}case"datei":{if(!/^[\w.-]+\.(txt|csv|json)$/u.test(c))throw new ie(`${e}: „::: datei“ braucht einen Dateinamen wie brief.txt, liste.csv oder daten.json.`);for(;l.length&&l[0].trim()==="";)l.shift();for(;l.length&&l[l.length-1].trim()==="";)l.pop();t.push({kind:"textFile",name:c,content:l.join(` -`)});break}default:throw new ie(`${e}: Unbekannter Block „::: ${o[1]}“.`)}r=u}return s(),t}function xE(i){const e=/^(.*?)\s+→\s+(.+)$/.exec(i);return e?{text:e[1],ref:e[2].trim()}:{text:i}}function vE(i,e){const t=new Map(i.map((a,s)=>[a.title.toLowerCase(),s]));for(const a of i.flatMap(s=>s.blocks))if(a.kind==="checklist"){for(const s of a.items)if(s.ref!==void 0&&(s.step=t.get(s.ref.toLowerCase()),s.step===void 0))throw new ie(`${e}: Checkliste verweist auf unbekannten Schritt „${s.ref}“.`)}const n=new Set(i.flatMap(a=>a.blocks).flatMap(a=>a.kind==="checklist"?a.items.map(s=>s.step):[]));for(const a of i.flatMap(s=>s.blocks))if(a.kind==="quiz"){for(const s of a.questions)if(s.ref!==void 0){if(s.step=t.get(s.ref.toLowerCase()),s.step===void 0)throw new ie(`${e}: Quizfrage „${s.question}“ verweist auf unbekannten Schritt „${s.ref}“.`);if(!n.has(s.step))throw new ie(`${e}: Zu „${s.ref}“ (Quizfrage „${s.question}“) gibt es keinen Checklistenpunkt.`)}}}function yE(i,e){var c;const{meta:t,body:n}=Bg(i,e),a=e.replace(/^.*\//,"").replace(/\.md$/,""),s=Number((c=/^(\d+)/.exec(a))==null?void 0:c[1]);if(!Number.isFinite(s))throw new ie(`${e}: Dateiname muss mit der Nummer beginnen (z. B. 01-…).`);const r=[];let o=[],l;const u=()=>{l&&r.push({title:l.title,blocks:Mg(l.lines.join(` +`)});break}default:throw new ie(`${e}: Unbekannter Block „::: ${o[1]}“.`)}r=u}return s(),t}function zN(i){const e=/^(.*?)\s+→\s+(.+)$/.exec(i);return e?{text:e[1],ref:e[2].trim()}:{text:i}}function IN(i,e){const t=new Map(i.map((a,s)=>[a.title.toLowerCase(),s]));for(const a of i.flatMap(s=>s.blocks))if(a.kind==="checklist"){for(const s of a.items)if(s.ref!==void 0&&(s.step=t.get(s.ref.toLowerCase()),s.step===void 0))throw new ie(`${e}: Checkliste verweist auf unbekannten Schritt „${s.ref}“.`)}const n=new Set(i.flatMap(a=>a.blocks).flatMap(a=>a.kind==="checklist"?a.items.map(s=>s.step):[]));for(const a of i.flatMap(s=>s.blocks))if(a.kind==="quiz"){for(const s of a.questions)if(s.ref!==void 0){if(s.step=t.get(s.ref.toLowerCase()),s.step===void 0)throw new ie(`${e}: Quizfrage „${s.question}“ verweist auf unbekannten Schritt „${s.ref}“.`);if(!n.has(s.step))throw new ie(`${e}: Zu „${s.ref}“ (Quizfrage „${s.question}“) gibt es keinen Checklistenpunkt.`)}}}function kN(i,e){var c;const{meta:t,body:n}=Bg(i,e),a=e.replace(/^.*\//,"").replace(/\.md$/,""),s=Number((c=/^(\d+)/.exec(a))==null?void 0:c[1]);if(!Number.isFinite(s))throw new ie(`${e}: Dateiname muss mit der Nummer beginnen (z. B. 01-…).`);const r=[];let o=[],l;const u=()=>{l&&r.push({title:l.title,blocks:Mg(l.lines.join(` `),e)})};for(const d of n.split(` -`)){const h=/^##\s+(.*)$/.exec(d);h?(u(),l={title:h[1].trim(),lines:[]}):l?l.lines.push(d):o.push(d)}if(u(),r.length===0)throw new ie(`${e}: Keine Schritte (## Überschrift) gefunden.`);vE(r,e);const m=t.get("titel");if(!m)throw new ie(`${e}: „titel:“ fehlt.`);return{id:a,number:s,title:m,section:t.get("bereich")??"",summary:t.get("kurz")??o.join(" ").trim(),steps:r}}function wE(i,e){const{meta:t,body:n}=Bg(i,e),a=t.get("titel");if(!a)throw new ie(`${e}: „titel:“ fehlt.`);const s=t.get("nach");return{id:e.replace(/^.*\//,"").replace(/\.md$/,""),title:a,after:s?Number(s):void 0,level:Number(t.get("stufe")??"1")||1,blocks:Mg(n,e)}}function pm(i,e){const t=i.split(/\s*,\s*/).map(n=>n.trim()).filter(Boolean);for(const n of t)if(!db(n))throw new ie(`${e}: Unbekanntes Teil „${n}“. Bekannt: ${Eh.join(", ")}.`);return t}const zE=Object.assign({"../../lessons/de/01-was-ist-ein-struktogramm.md":i4,"../../lessons/de/01-weitere-darstellungen.md":a4,"../../lessons/de/02-der-editor.md":s4,"../../lessons/de/03-speichern-oeffnen-exportieren.md":r4,"../../lessons/de/04-variablen-und-datentypen.md":o4,"../../lessons/de/05-sequenz.md":l4,"../../lessons/de/06-eingabe-und-ausgabe.md":u4,"../../lessons/de/07-simulation-und-schreibtischtest.md":m4,"../../lessons/de/08-verzweigung.md":c4,"../../lessons/de/09-bedingungen-verknuepfen.md":d4,"../../lessons/de/10-fallauswahl.md":h4,"../../lessons/de/11-while-schleife.md":g4,"../../lessons/de/12-do-while-schleife.md":p4,"../../lessons/de/13-for-schleife.md":f4,"../../lessons/de/14-verschachteln.md":b4,"../../lessons/de/15-arrays.md":x4,"../../lessons/de/16-zweidimensionale-arrays.md":v4,"../../lessons/de/17-zeichenketten.md":y4,"../../lessons/de/18-aufruf-und-aussprung.md":w4,"../../lessons/de/19-suchen-und-sortieren.md":z4,"../../lessons/de/20-java.md":I4,"../../lessons/de/21-python-und-javascript.md":k4,"../../lessons/de/22-try-und-catch.md":S4,"../../lessons/de/23-text-einlesen-und-speichern.md":T4,"../../lessons/de/24-zeile-fuer-zeile.md":_4,"../../lessons/de/25-tabellen-als-csv.md":j4,"../../lessons/de/26-json.md":C4,"../../lessons/de/27-formate-im-vergleich.md":A4,"../../lessons/de/28-erstes-fenster.md":P4,"../../lessons/de/29-knopf-im-fenster.md":D4,"../../lessons/de/30-der-knopf-reagiert.md":B4,"../../lessons/de/31-zahl-verdoppeln.md":O4,"../../lessons/de/32-klickzaehler.md":M4,"../../lessons/de/33-ampel.md":Z4,"../../lessons/de/34-notenrechner.md":L4,"../../lessons/de/35-taschenrechner.md":W4,"../../lessons/de/36-zahlenraten.md":E4,"../../lessons/de/37-viele-knoepfe-ein-zuhoerer.md":N4,"../../lessons/de/38-innere-klassen.md":F4,"../../lessons/de/39-zwei-reiter.md":R4,"../../lessons/de/40-model-view-controller.md":J4,"../../lessons/de/begriffe.md":G4,"../../lessons/de/nachschlagen.md":H4,"../../lessons/en/01-was-ist-ein-struktogramm.md":V4,"../../lessons/en/01-weitere-darstellungen.md":q4,"../../lessons/en/02-der-editor.md":Q4,"../../lessons/en/03-speichern-oeffnen-exportieren.md":U4,"../../lessons/en/04-variablen-und-datentypen.md":Y4,"../../lessons/en/05-sequenz.md":$4,"../../lessons/en/06-eingabe-und-ausgabe.md":K4,"../../lessons/en/07-simulation-und-schreibtischtest.md":X4,"../../lessons/en/08-verzweigung.md":ev,"../../lessons/en/09-bedingungen-verknuepfen.md":tv,"../../lessons/en/10-fallauswahl.md":nv,"../../lessons/en/11-while-schleife.md":iv,"../../lessons/en/12-do-while-schleife.md":av,"../../lessons/en/13-for-schleife.md":sv,"../../lessons/en/14-verschachteln.md":rv,"../../lessons/en/15-arrays.md":ov,"../../lessons/en/16-zweidimensionale-arrays.md":lv,"../../lessons/en/17-zeichenketten.md":uv,"../../lessons/en/18-aufruf-und-aussprung.md":mv,"../../lessons/en/19-suchen-und-sortieren.md":cv,"../../lessons/en/20-java.md":dv,"../../lessons/en/21-python-und-javascript.md":hv,"../../lessons/en/22-try-und-catch.md":gv,"../../lessons/en/23-text-einlesen-und-speichern.md":pv,"../../lessons/en/24-zeile-fuer-zeile.md":fv,"../../lessons/en/25-tabellen-als-csv.md":bv,"../../lessons/en/26-json.md":xv,"../../lessons/en/27-formate-im-vergleich.md":vv,"../../lessons/en/28-erstes-fenster.md":yv,"../../lessons/en/29-knopf-im-fenster.md":wv,"../../lessons/en/30-der-knopf-reagiert.md":zv,"../../lessons/en/31-zahl-verdoppeln.md":Iv,"../../lessons/en/32-klickzaehler.md":kv,"../../lessons/en/33-ampel.md":Sv,"../../lessons/en/34-notenrechner.md":Tv,"../../lessons/en/35-taschenrechner.md":_v,"../../lessons/en/36-zahlenraten.md":jv,"../../lessons/en/37-viele-knoepfe-ein-zuhoerer.md":Cv,"../../lessons/en/38-innere-klassen.md":Av,"../../lessons/en/39-zwei-reiter.md":Pv,"../../lessons/en/40-model-view-controller.md":Dv,"../../lessons/en/begriffe.md":Bv,"../../lessons/en/nachschlagen.md":Ov,"../../lessons/pt/01-was-ist-ein-struktogramm.md":Mv,"../../lessons/pt/01-weitere-darstellungen.md":Zv,"../../lessons/pt/02-der-editor.md":Lv,"../../lessons/pt/03-speichern-oeffnen-exportieren.md":Wv,"../../lessons/pt/04-variablen-und-datentypen.md":Ev,"../../lessons/pt/05-sequenz.md":Nv,"../../lessons/pt/06-eingabe-und-ausgabe.md":Fv,"../../lessons/pt/07-simulation-und-schreibtischtest.md":Rv,"../../lessons/pt/08-verzweigung.md":Jv,"../../lessons/pt/09-bedingungen-verknuepfen.md":Gv,"../../lessons/pt/10-fallauswahl.md":Hv,"../../lessons/pt/11-while-schleife.md":Vv,"../../lessons/pt/12-do-while-schleife.md":qv,"../../lessons/pt/13-for-schleife.md":Qv,"../../lessons/pt/14-verschachteln.md":Uv,"../../lessons/pt/15-arrays.md":Yv,"../../lessons/pt/16-zweidimensionale-arrays.md":$v,"../../lessons/pt/17-zeichenketten.md":Kv,"../../lessons/pt/18-aufruf-und-aussprung.md":Xv,"../../lessons/pt/19-suchen-und-sortieren.md":ey,"../../lessons/pt/20-java.md":ty,"../../lessons/pt/21-python-und-javascript.md":ny,"../../lessons/pt/22-try-und-catch.md":iy,"../../lessons/pt/23-text-einlesen-und-speichern.md":ay,"../../lessons/pt/24-zeile-fuer-zeile.md":sy,"../../lessons/pt/25-tabellen-als-csv.md":ry,"../../lessons/pt/26-json.md":oy,"../../lessons/pt/27-formate-im-vergleich.md":ly,"../../lessons/pt/28-erstes-fenster.md":uy,"../../lessons/pt/29-knopf-im-fenster.md":my,"../../lessons/pt/30-der-knopf-reagiert.md":cy,"../../lessons/pt/31-zahl-verdoppeln.md":dy,"../../lessons/pt/32-klickzaehler.md":hy,"../../lessons/pt/33-ampel.md":gy,"../../lessons/pt/34-notenrechner.md":py,"../../lessons/pt/35-taschenrechner.md":fy,"../../lessons/pt/36-zahlenraten.md":by,"../../lessons/pt/37-viele-knoepfe-ein-zuhoerer.md":xy,"../../lessons/pt/38-innere-klassen.md":vy,"../../lessons/pt/39-zwei-reiter.md":yy,"../../lessons/pt/40-model-view-controller.md":wy,"../../lessons/pt/begriffe.md":zy,"../../lessons/pt/nachschlagen.md":Iy}),IE=Object.assign({"../../lessons/de/aufgaben/alter-unterprogramm.md":ky,"../../lessons/de/aufgaben/ballwurf.md":Sy,"../../lessons/de/aufgaben/bestenliste.md":Ty,"../../lessons/de/aufgaben/binaerzahl.md":_y,"../../lessons/de/aufgaben/caesar.md":jy,"../../lessons/de/aufgaben/collatz.md":Cy,"../../lessons/de/aufgaben/einheitenrechner.md":Ay,"../../lessons/de/aufgaben/fibonacci.md":Py,"../../lessons/de/aufgaben/gerade-ungerade.md":Dy,"../../lessons/de/aufgaben/mehrwertsteuer.md":By,"../../lessons/de/aufgaben/notendurchschnitt.md":Oy,"../../lessons/de/aufgaben/pin-pruefen.md":My,"../../lessons/de/aufgaben/schiffe-versenken.md":Zy,"../../lessons/de/aufgaben/speisekarte.md":Ly,"../../lessons/de/aufgaben/summe-bilden.md":Wy,"../../lessons/de/aufgaben/tafeldienst.md":Ey,"../../lessons/de/aufgaben/taschenrechner.md":Ny,"../../lessons/de/aufgaben/verleih-menue.md":Fy,"../../lessons/de/aufgaben/vokabeltrainer.md":Ry,"../../lessons/de/aufgaben/volljaehrig.md":Jy,"../../lessons/de/aufgaben/wuerfel-mvc.md":Gy,"../../lessons/de/aufgaben/zahl-verdoppeln.md":Hy,"../../lessons/en/aufgaben/alter-unterprogramm.md":Vy,"../../lessons/en/aufgaben/ballwurf.md":qy,"../../lessons/en/aufgaben/bestenliste.md":Qy,"../../lessons/en/aufgaben/binaerzahl.md":Uy,"../../lessons/en/aufgaben/caesar.md":Yy,"../../lessons/en/aufgaben/collatz.md":$y,"../../lessons/en/aufgaben/einheitenrechner.md":Ky,"../../lessons/en/aufgaben/fibonacci.md":Xy,"../../lessons/en/aufgaben/gerade-ungerade.md":ew,"../../lessons/en/aufgaben/mehrwertsteuer.md":tw,"../../lessons/en/aufgaben/notendurchschnitt.md":nw,"../../lessons/en/aufgaben/pin-pruefen.md":iw,"../../lessons/en/aufgaben/schiffe-versenken.md":aw,"../../lessons/en/aufgaben/speisekarte.md":sw,"../../lessons/en/aufgaben/summe-bilden.md":rw,"../../lessons/en/aufgaben/tafeldienst.md":ow,"../../lessons/en/aufgaben/taschenrechner.md":lw,"../../lessons/en/aufgaben/verleih-menue.md":uw,"../../lessons/en/aufgaben/vokabeltrainer.md":mw,"../../lessons/en/aufgaben/volljaehrig.md":cw,"../../lessons/en/aufgaben/wuerfel-mvc.md":dw,"../../lessons/en/aufgaben/zahl-verdoppeln.md":hw,"../../lessons/pt/aufgaben/alter-unterprogramm.md":gw,"../../lessons/pt/aufgaben/ballwurf.md":pw,"../../lessons/pt/aufgaben/bestenliste.md":fw,"../../lessons/pt/aufgaben/binaerzahl.md":bw,"../../lessons/pt/aufgaben/caesar.md":xw,"../../lessons/pt/aufgaben/collatz.md":vw,"../../lessons/pt/aufgaben/einheitenrechner.md":yw,"../../lessons/pt/aufgaben/fibonacci.md":ww,"../../lessons/pt/aufgaben/gerade-ungerade.md":zw,"../../lessons/pt/aufgaben/mehrwertsteuer.md":Iw,"../../lessons/pt/aufgaben/notendurchschnitt.md":kw,"../../lessons/pt/aufgaben/pin-pruefen.md":Sw,"../../lessons/pt/aufgaben/schiffe-versenken.md":Tw,"../../lessons/pt/aufgaben/speisekarte.md":_w,"../../lessons/pt/aufgaben/summe-bilden.md":jw,"../../lessons/pt/aufgaben/tafeldienst.md":Cw,"../../lessons/pt/aufgaben/taschenrechner.md":Aw,"../../lessons/pt/aufgaben/verleih-menue.md":Pw,"../../lessons/pt/aufgaben/vokabeltrainer.md":Dw,"../../lessons/pt/aufgaben/volljaehrig.md":Bw,"../../lessons/pt/aufgaben/wuerfel-mvc.md":Ow,"../../lessons/pt/aufgaben/zahl-verdoppeln.md":Mw}),fm=Object.assign({"../../lessons/de/visubot/00-struktogramm-und-editor.md":Zw,"../../lessons/de/visubot/01-der-mbot2.md":Lw,"../../lessons/de/visubot/02-das-quadrat.md":Ww,"../../lessons/de/visubot/03-variablen-und-ausgabe.md":Ew,"../../lessons/de/visubot/03-zeile-fuer-zeile-testen.md":Nw,"../../lessons/de/visubot/04-sensoren.md":Fw,"../../lessons/de/visubot/05-bis-zur-wand.md":Rw,"../../lessons/de/visubot/05-erst-fahren-dann-pruefen.md":Jw,"../../lessons/de/visubot/06-abstand.md":Gw,"../../lessons/de/visubot/07-linie.md":Hw,"../../lessons/de/visubot/07-und-oder.md":Vw,"../../lessons/de/visubot/08-farben.md":qw,"../../lessons/de/visubot/09-fallauswahl-mbot2.md":Qw,"../../lessons/de/visubot/10-tasten-joystick.md":Uw,"../../lessons/de/visubot/10-unterbrechen-mit-break.md":Yw,"../../lessons/de/visubot/11-licht.md":$w,"../../lessons/de/visubot/12-lautstaerke.md":Kw,"../../lessons/de/visubot/13-neigung.md":Xw,"../../lessons/de/visubot/14-leds.md":e9,"../../lessons/de/visubot/15-einzelne-leds.md":t9,"../../lessons/de/visubot/16-lautsprecher.md":n9,"../../lessons/de/visubot/17-arrays-melodie.md":i9,"../../lessons/de/visubot/18-bildschirm.md":a9,"../../lessons/de/visubot/19-zeichenketten.md":s9,"../../lessons/de/visubot/20-motoren.md":r9,"../../lessons/de/visubot/21-stoppuhr-akku.md":o9,"../../lessons/de/visubot/22-eigene-methoden.md":l9,"../../lessons/de/visubot/nachschlagen.md":u9,"../../lessons/en/visubot/00-struktogramm-und-editor.md":m9,"../../lessons/en/visubot/01-der-mbot2.md":c9,"../../lessons/en/visubot/02-das-quadrat.md":d9,"../../lessons/en/visubot/03-variablen-und-ausgabe.md":h9,"../../lessons/en/visubot/03-zeile-fuer-zeile-testen.md":g9,"../../lessons/en/visubot/04-sensoren.md":p9,"../../lessons/en/visubot/05-bis-zur-wand.md":f9,"../../lessons/en/visubot/05-erst-fahren-dann-pruefen.md":b9,"../../lessons/en/visubot/06-abstand.md":x9,"../../lessons/en/visubot/07-linie.md":v9,"../../lessons/en/visubot/07-und-oder.md":y9,"../../lessons/en/visubot/08-farben.md":w9,"../../lessons/en/visubot/09-fallauswahl-mbot2.md":z9,"../../lessons/en/visubot/10-tasten-joystick.md":I9,"../../lessons/en/visubot/10-unterbrechen-mit-break.md":k9,"../../lessons/en/visubot/11-licht.md":S9,"../../lessons/en/visubot/12-lautstaerke.md":T9,"../../lessons/en/visubot/13-neigung.md":_9,"../../lessons/en/visubot/14-leds.md":j9,"../../lessons/en/visubot/15-einzelne-leds.md":C9,"../../lessons/en/visubot/16-lautsprecher.md":A9,"../../lessons/en/visubot/17-arrays-melodie.md":P9,"../../lessons/en/visubot/18-bildschirm.md":D9,"../../lessons/en/visubot/19-zeichenketten.md":B9,"../../lessons/en/visubot/20-motoren.md":O9,"../../lessons/en/visubot/21-stoppuhr-akku.md":M9,"../../lessons/en/visubot/22-eigene-methoden.md":Z9,"../../lessons/en/visubot/nachschlagen.md":L9}),kE=Object.assign({"../../lessons/de/visubot/aufgaben/alarmanlage.md":W9,"../../lessons/de/visubot/aufgaben/ausgang.md":E9,"../../lessons/de/visubot/aufgaben/binaer-zaehlen.md":N9,"../../lessons/de/visubot/aufgaben/dreieck.md":F9,"../../lessons/de/visubot/aufgaben/einparken.md":R9,"../../lessons/de/visubot/aufgaben/hindernis.md":J9,"../../lessons/de/visubot/aufgaben/knight-rider.md":G9,"../../lessons/de/visubot/aufgaben/labyrinth.md":H9,"../../lessons/de/visubot/aufgaben/linienfolger-stopp.md":V9,"../../lessons/de/visubot/aufgaben/morsen.md":q9,"../../lessons/de/visubot/aufgaben/nachtwaechter.md":Q9,"../../lessons/de/visubot/aufgaben/slalom.md":U9,"../../lessons/de/visubot/aufgaben/spirale.md":Y9,"../../lessons/de/visubot/aufgaben/treppe.md":$9,"../../lessons/de/visubot/aufgaben/tunnel.md":K9,"../../lessons/de/visubot/aufgaben/wald.md":X9,"../../lessons/en/visubot/aufgaben/alarmanlage.md":e5,"../../lessons/en/visubot/aufgaben/ausgang.md":t5,"../../lessons/en/visubot/aufgaben/binaer-zaehlen.md":n5,"../../lessons/en/visubot/aufgaben/dreieck.md":i5,"../../lessons/en/visubot/aufgaben/einparken.md":a5,"../../lessons/en/visubot/aufgaben/hindernis.md":s5,"../../lessons/en/visubot/aufgaben/knight-rider.md":r5,"../../lessons/en/visubot/aufgaben/labyrinth.md":o5,"../../lessons/en/visubot/aufgaben/linienfolger-stopp.md":l5,"../../lessons/en/visubot/aufgaben/morsen.md":u5,"../../lessons/en/visubot/aufgaben/nachtwaechter.md":m5,"../../lessons/en/visubot/aufgaben/slalom.md":c5,"../../lessons/en/visubot/aufgaben/spirale.md":d5,"../../lessons/en/visubot/aufgaben/treppe.md":h5,"../../lessons/en/visubot/aufgaben/tunnel.md":g5,"../../lessons/en/visubot/aufgaben/wald.md":p5}),SE=Object.assign({"../../lessons/diagramme/aufgabe-alter-haupt-loesung.visustruct":f5,"../../lessons/diagramme/aufgabe-alter-unterprogramm-loesung.visustruct":b5,"../../lessons/diagramme/aufgabe-ballwurf-loesung.visustruct":x5,"../../lessons/diagramme/aufgabe-ballwurf-start.visustruct":v5,"../../lessons/diagramme/aufgabe-bestenliste-loesung.visustruct":y5,"../../lessons/diagramme/aufgabe-binaer-loesung.visustruct":w5,"../../lessons/diagramme/aufgabe-caesar-array-loesung.visustruct":z5,"../../lessons/diagramme/aufgabe-caesar-array-start.visustruct":I5,"../../lessons/diagramme/aufgabe-caesar-ascii-loesung.visustruct":k5,"../../lessons/diagramme/aufgabe-caesar-entschluesseln-loesung.visustruct":S5,"../../lessons/diagramme/aufgabe-collatz-loesung.visustruct":T5,"../../lessons/diagramme/aufgabe-durchschnitt-loesung.visustruct":_5,"../../lessons/diagramme/aufgabe-fibonacci-loesung.visustruct":j5,"../../lessons/diagramme/aufgabe-gerade-loesung.visustruct":C5,"../../lessons/diagramme/aufgabe-mehrwertsteuer-loesung.visustruct":A5,"../../lessons/diagramme/aufgabe-pin-java-loesung.visustruct":P5,"../../lessons/diagramme/aufgabe-pin-loesung.visustruct":D5,"../../lessons/diagramme/aufgabe-rechner-loesung.visustruct":B5,"../../lessons/diagramme/aufgabe-schiffe-loesung.visustruct":O5,"../../lessons/diagramme/aufgabe-schiffe-start.visustruct":M5,"../../lessons/diagramme/aufgabe-speisekarte-loesung.visustruct":Z5,"../../lessons/diagramme/aufgabe-summe-loesung.visustruct":L5,"../../lessons/diagramme/aufgabe-tafeldienst-loesung.visustruct":W5,"../../lessons/diagramme/aufgabe-verdoppeln-loesung.visustruct":E5,"../../lessons/diagramme/aufgabe-verleih-java-loesung.visustruct":N5,"../../lessons/diagramme/aufgabe-verleih-loesung.visustruct":F5,"../../lessons/diagramme/aufgabe-vokabeln-loesung.visustruct":R5,"../../lessons/diagramme/aufgabe-vokabeln-start.visustruct":J5,"../../lessons/diagramme/aufgabe-volljaehrig-loesung.visustruct":G5,"../../lessons/diagramme/dt-buffered.visustruct":H5,"../../lessons/diagramme/dt-csv.visustruct":V5,"../../lessons/diagramme/dt-json.visustruct":q5,"../../lessons/diagramme/dt-lesen.visustruct":Q5,"../../lessons/diagramme/en/aufgabe-alter-haupt-loesung.visustruct":U5,"../../lessons/diagramme/en/aufgabe-alter-unterprogramm-loesung.visustruct":Y5,"../../lessons/diagramme/en/aufgabe-ballwurf-loesung.visustruct":$5,"../../lessons/diagramme/en/aufgabe-ballwurf-start.visustruct":K5,"../../lessons/diagramme/en/aufgabe-bestenliste-loesung.visustruct":X5,"../../lessons/diagramme/en/aufgabe-binaer-loesung.visustruct":ez,"../../lessons/diagramme/en/aufgabe-caesar-array-loesung.visustruct":tz,"../../lessons/diagramme/en/aufgabe-caesar-array-start.visustruct":nz,"../../lessons/diagramme/en/aufgabe-caesar-ascii-loesung.visustruct":iz,"../../lessons/diagramme/en/aufgabe-caesar-entschluesseln-loesung.visustruct":az,"../../lessons/diagramme/en/aufgabe-collatz-loesung.visustruct":sz,"../../lessons/diagramme/en/aufgabe-durchschnitt-loesung.visustruct":rz,"../../lessons/diagramme/en/aufgabe-fibonacci-loesung.visustruct":oz,"../../lessons/diagramme/en/aufgabe-gerade-loesung.visustruct":lz,"../../lessons/diagramme/en/aufgabe-mehrwertsteuer-loesung.visustruct":uz,"../../lessons/diagramme/en/aufgabe-pin-java-loesung.visustruct":mz,"../../lessons/diagramme/en/aufgabe-pin-loesung.visustruct":cz,"../../lessons/diagramme/en/aufgabe-rechner-loesung.visustruct":dz,"../../lessons/diagramme/en/aufgabe-schiffe-loesung.visustruct":hz,"../../lessons/diagramme/en/aufgabe-schiffe-start.visustruct":gz,"../../lessons/diagramme/en/aufgabe-speisekarte-loesung.visustruct":pz,"../../lessons/diagramme/en/aufgabe-summe-loesung.visustruct":fz,"../../lessons/diagramme/en/aufgabe-tafeldienst-loesung.visustruct":bz,"../../lessons/diagramme/en/aufgabe-verdoppeln-loesung.visustruct":xz,"../../lessons/diagramme/en/aufgabe-verleih-java-loesung.visustruct":vz,"../../lessons/diagramme/en/aufgabe-verleih-loesung.visustruct":yz,"../../lessons/diagramme/en/aufgabe-vokabeln-loesung.visustruct":wz,"../../lessons/diagramme/en/aufgabe-vokabeln-start.visustruct":zz,"../../lessons/diagramme/en/aufgabe-volljaehrig-loesung.visustruct":Iz,"../../lessons/diagramme/en/dt-buffered.visustruct":kz,"../../lessons/diagramme/en/dt-csv.visustruct":Sz,"../../lessons/diagramme/en/dt-json.visustruct":Tz,"../../lessons/diagramme/en/dt-lesen.visustruct":_z,"../../lessons/diagramme/en/kino-einmaleins-loesung.visustruct":jz,"../../lessons/diagramme/en/kino-frei-loesung.visustruct":Cz,"../../lessons/diagramme/en/kino-frei-start.visustruct":Az,"../../lessons/diagramme/en/kino-karte-loesung.visustruct":Pz,"../../lessons/diagramme/en/kino-karte-start.visustruct":Dz,"../../lessons/diagramme/en/kino-saalplan.visustruct":Bz,"../../lessons/diagramme/en/kino-verkaufen.visustruct":Oz,"../../lessons/diagramme/en/l04-gross-klein-loesung.visustruct":Mz,"../../lessons/diagramme/en/l04-gross-klein-start.visustruct":Zz,"../../lessons/diagramme/en/l04-java-fehler-loesung.visustruct":Lz,"../../lessons/diagramme/en/l04-java-fehler-start.visustruct":Wz,"../../lessons/diagramme/en/l04-java-laeuft-nicht-loesung.visustruct":Ez,"../../lessons/diagramme/en/l04-java-laeuft-nicht-start.visustruct":Nz,"../../lessons/diagramme/en/l04-java-steckbrief-loesung.visustruct":Fz,"../../lessons/diagramme/en/l04-rechnen.visustruct":Rz,"../../lessons/diagramme/en/l04-reihenfolge-loesung.visustruct":Jz,"../../lessons/diagramme/en/l04-reihenfolge-start.visustruct":Gz,"../../lessons/diagramme/en/l04-tauschen-loesung.visustruct":Hz,"../../lessons/diagramme/en/l04-tauschen-start.visustruct":Vz,"../../lessons/diagramme/en/l04-tauschen.visustruct":qz,"../../lessons/diagramme/en/l05-datentypen.visustruct":Qz,"../../lessons/diagramme/en/l05-division.visustruct":Uz,"../../lessons/diagramme/en/l05-einkauf-loesung.visustruct":Yz,"../../lessons/diagramme/en/l05-java-fehler-loesung.visustruct":$z,"../../lessons/diagramme/en/l05-java-fehler-start.visustruct":Kz,"../../lessons/diagramme/en/l05-java-kino-loesung.visustruct":Xz,"../../lessons/diagramme/en/l05-java-laeuft-nicht-loesung.visustruct":e6,"../../lessons/diagramme/en/l05-java-laeuft-nicht-start.visustruct":t6,"../../lessons/diagramme/en/l05-rechteck-loesung.visustruct":n6,"../../lessons/diagramme/en/l05-sekunden-loesung.visustruct":i6,"../../lessons/diagramme/en/l05-sekunden-start.visustruct":a6,"../../lessons/diagramme/en/l05-sequenz.visustruct":s6,"../../lessons/diagramme/en/l06-begruessung-loesung.visustruct":r6,"../../lessons/diagramme/en/l06-eva.visustruct":o6,"../../lessons/diagramme/en/l06-java-fehler-loesung.visustruct":l6,"../../lessons/diagramme/en/l06-java-fehler-start.visustruct":u6,"../../lessons/diagramme/en/l06-java-laeuft-nicht-loesung.visustruct":m6,"../../lessons/diagramme/en/l06-java-laeuft-nicht-start.visustruct":c6,"../../lessons/diagramme/en/l06-java-tage-loesung.visustruct":d6,"../../lessons/diagramme/en/l06-mittelwert-loesung.visustruct":h6,"../../lessons/diagramme/en/l06-rechner-loesung.visustruct":g6,"../../lessons/diagramme/en/l07-alter-pruefen.visustruct":p6,"../../lessons/diagramme/en/l07-betrag-loesung.visustruct":f6,"../../lessons/diagramme/en/l07-gerade-loesung.visustruct":b6,"../../lessons/diagramme/en/l07-java-fehler-loesung.visustruct":x6,"../../lessons/diagramme/en/l07-java-fehler-start.visustruct":v6,"../../lessons/diagramme/en/l07-java-laeuft-nicht-loesung.visustruct":y6,"../../lessons/diagramme/en/l07-java-laeuft-nicht-start.visustruct":w6,"../../lessons/diagramme/en/l07-java-pizza-loesung.visustruct":z6,"../../lessons/diagramme/en/l07-java-pizza-start.visustruct":I6,"../../lessons/diagramme/en/l07-maximum-loesung.visustruct":k6,"../../lessons/diagramme/en/l07-rabatt.visustruct":S6,"../../lessons/diagramme/en/l08-gueltig-loesung.visustruct":T6,"../../lessons/diagramme/en/l08-java-bestanden-loesung.visustruct":_6,"../../lessons/diagramme/en/l08-java-fehler-loesung.visustruct":j6,"../../lessons/diagramme/en/l08-java-fehler-start.visustruct":C6,"../../lessons/diagramme/en/l08-java-laeuft-nicht-loesung.visustruct":A6,"../../lessons/diagramme/en/l08-java-laeuft-nicht-start.visustruct":P6,"../../lessons/diagramme/en/l08-jugendticket.visustruct":D6,"../../lessons/diagramme/en/l08-note.visustruct":B6,"../../lessons/diagramme/en/l08-schaltjahr-loesung.visustruct":O6,"../../lessons/diagramme/en/l08-wochenende-loesung.visustruct":M6,"../../lessons/diagramme/en/l09-ampel.visustruct":Z6,"../../lessons/diagramme/en/l09-automat.visustruct":L6,"../../lessons/diagramme/en/l09-java-fehler-loesung.visustruct":W6,"../../lessons/diagramme/en/l09-java-fehler-start.visustruct":E6,"../../lessons/diagramme/en/l09-java-laeuft-nicht-loesung.visustruct":N6,"../../lessons/diagramme/en/l09-java-laeuft-nicht-start.visustruct":F6,"../../lessons/diagramme/en/l09-java-schule-loesung.visustruct":R6,"../../lessons/diagramme/en/l09-note-loesung.visustruct":J6,"../../lessons/diagramme/en/l09-rechner-loesung.visustruct":G6,"../../lessons/diagramme/en/l09-verschachtelt.visustruct":H6,"../../lessons/diagramme/en/l1-grundbausteine.visustruct":V6,"../../lessons/diagramme/en/l1-sequenz.visustruct":q6,"../../lessons/diagramme/en/l1-tee.visustruct":Q6,"../../lessons/diagramme/en/l1-verzweigung.visustruct":U6,"../../lessons/diagramme/en/l1-wiederholung.visustruct":Y6,"../../lessons/diagramme/en/l10-bis-n-loesung.visustruct":$6,"../../lessons/diagramme/en/l10-countdown.visustruct":K6,"../../lessons/diagramme/en/l10-endlos.visustruct":X6,"../../lessons/diagramme/en/l10-fakultaet.visustruct":eI,"../../lessons/diagramme/en/l10-java-fehler-loesung.visustruct":tI,"../../lessons/diagramme/en/l10-java-fehler-start.visustruct":nI,"../../lessons/diagramme/en/l10-java-laeuft-nicht-loesung.visustruct":iI,"../../lessons/diagramme/en/l10-java-laeuft-nicht-start.visustruct":aI,"../../lessons/diagramme/en/l10-java-wuerfel-loesung.visustruct":sI,"../../lessons/diagramme/en/l10-verdoppeln-loesung.visustruct":rI,"../../lessons/diagramme/en/l11-eingabe-pruefen.visustruct":oI,"../../lessons/diagramme/en/l11-einmal.visustruct":lI,"../../lessons/diagramme/en/l11-java-fehler-loesung.visustruct":uI,"../../lessons/diagramme/en/l11-java-fehler-start.visustruct":mI,"../../lessons/diagramme/en/l11-java-gerade-loesung.visustruct":cI,"../../lessons/diagramme/en/l11-java-laeuft-nicht-loesung.visustruct":dI,"../../lessons/diagramme/en/l11-java-laeuft-nicht-start.visustruct":hI,"../../lessons/diagramme/en/l11-note-loesung.visustruct":gI,"../../lessons/diagramme/en/l11-summe-loesung.visustruct":pI,"../../lessons/diagramme/en/l12-countdown-loesung.visustruct":fI,"../../lessons/diagramme/en/l12-einmaleins-loesung.visustruct":bI,"../../lessons/diagramme/en/l12-eins-bis-fuenf.visustruct":xI,"../../lessons/diagramme/en/l12-java-fehler-loesung.visustruct":vI,"../../lessons/diagramme/en/l12-java-fehler-start.visustruct":yI,"../../lessons/diagramme/en/l12-java-laeuft-nicht-loesung.visustruct":wI,"../../lessons/diagramme/en/l12-java-laeuft-nicht-start.visustruct":zI,"../../lessons/diagramme/en/l12-java-verdoppeln-loesung.visustruct":II,"../../lessons/diagramme/en/l12-summe.visustruct":kI,"../../lessons/diagramme/en/l13-dreieck.visustruct":SI,"../../lessons/diagramme/en/l13-gerade-eingaben-loesung.visustruct":TI,"../../lessons/diagramme/en/l13-gerade-zaehlen.visustruct":_I,"../../lessons/diagramme/en/l13-java-fehler-loesung.visustruct":jI,"../../lessons/diagramme/en/l13-java-fehler-start.visustruct":CI,"../../lessons/diagramme/en/l13-java-laeuft-nicht-loesung.visustruct":AI,"../../lessons/diagramme/en/l13-java-laeuft-nicht-start.visustruct":PI,"../../lessons/diagramme/en/l13-java-quadrate-loesung.visustruct":DI,"../../lessons/diagramme/en/l13-rechteck-loesung.visustruct":BI,"../../lessons/diagramme/en/l14-array-durchlaufen.visustruct":OI,"../../lessons/diagramme/en/l14-erster-letzter-loesung.visustruct":MI,"../../lessons/diagramme/en/l14-java-fehler-loesung.visustruct":ZI,"../../lessons/diagramme/en/l14-java-fehler-start.visustruct":LI,"../../lessons/diagramme/en/l14-java-laeuft-nicht-loesung.visustruct":WI,"../../lessons/diagramme/en/l14-java-laeuft-nicht-start.visustruct":EI,"../../lessons/diagramme/en/l14-java-treppe-loesung.visustruct":NI,"../../lessons/diagramme/en/l14-namen-eingeben.visustruct":FI,"../../lessons/diagramme/en/l14-rueckwaerts-loesung.visustruct":RI,"../../lessons/diagramme/en/l14-summe-max-loesung.visustruct":JI,"../../lessons/diagramme/en/l14-summe-maximum.visustruct":GI,"../../lessons/diagramme/en/l15-bis-null-loesung.visustruct":HI,"../../lessons/diagramme/en/l15-endlos-aussprung.visustruct":VI,"../../lessons/diagramme/en/l15-flaeche-loesung.visustruct":qI,"../../lessons/diagramme/en/l15-flaeche-unterprogramm-loesung.visustruct":QI,"../../lessons/diagramme/en/l15-hauptprogramm.visustruct":UI,"../../lessons/diagramme/en/l15-java-fehler-loesung.visustruct":YI,"../../lessons/diagramme/en/l15-java-fehler-start.visustruct":$I,"../../lessons/diagramme/en/l15-java-laeuft-nicht-loesung.visustruct":KI,"../../lessons/diagramme/en/l15-java-laeuft-nicht-start.visustruct":XI,"../../lessons/diagramme/en/l15-java-noten-loesung.visustruct":ek,"../../lessons/diagramme/en/l15-quadrat-haupt.visustruct":tk,"../../lessons/diagramme/en/l15-quadrat.visustruct":nk,"../../lessons/diagramme/en/l15-titel-loesung.visustruct":ik,"../../lessons/diagramme/en/l15-unterprogramm.visustruct":ak,"../../lessons/diagramme/en/l15-zeige-summe-haupt.visustruct":sk,"../../lessons/diagramme/en/l15-zeige-summe.visustruct":rk,"../../lessons/diagramme/en/l16-countdown-loesung.visustruct":ok,"../../lessons/diagramme/en/l16-countdown-start.visustruct":lk,"../../lessons/diagramme/en/l16-java-fehler-loesung.visustruct":uk,"../../lessons/diagramme/en/l16-java-fehler-start.visustruct":mk,"../../lessons/diagramme/en/l16-java-laeuft-nicht-loesung.visustruct":ck,"../../lessons/diagramme/en/l16-java-laeuft-nicht-start.visustruct":dk,"../../lessons/diagramme/en/l16-java-punkte-loesung.visustruct":hk,"../../lessons/diagramme/en/l16-schreibtisch.visustruct":gk,"../../lessons/diagramme/en/l16-summe-loesung.visustruct":pk,"../../lessons/diagramme/en/l16-summe-start.visustruct":fk,"../../lessons/diagramme/en/l17-beispiel.visustruct":bk,"../../lessons/diagramme/en/l17-fakultaet-loesung.visustruct":xk,"../../lessons/diagramme/en/l17-java-brief-loesung.visustruct":vk,"../../lessons/diagramme/en/l17-java-brief-start.visustruct":yk,"../../lessons/diagramme/en/l17-java-fehler-loesung.visustruct":wk,"../../lessons/diagramme/en/l17-java-fehler-start.visustruct":zk,"../../lessons/diagramme/en/l17-java-laeuft-nicht-loesung.visustruct":Ik,"../../lessons/diagramme/en/l17-java-laeuft-nicht-start.visustruct":kk,"../../lessons/diagramme/en/l17-java-passwort-loesung.visustruct":Sk,"../../lessons/diagramme/en/l17-ticket-loesung.visustruct":Tk,"../../lessons/diagramme/en/l18-beispiel.visustruct":_k,"../../lessons/diagramme/en/l18-java-fehler-loesung.visustruct":jk,"../../lessons/diagramme/en/l18-java-fehler-start.visustruct":Ck,"../../lessons/diagramme/en/l18-java-kasse-loesung.visustruct":Ak,"../../lessons/diagramme/en/l18-js-loesung.visustruct":Pk,"../../lessons/diagramme/en/l18-python-loesung.visustruct":Dk,"../../lessons/diagramme/en/l19-java-fehler-loesung.visustruct":Bk,"../../lessons/diagramme/en/l19-java-fehler-start.visustruct":Ok,"../../lessons/diagramme/en/l19-java-laeuft-nicht-loesung.visustruct":Mk,"../../lessons/diagramme/en/l19-java-laeuft-nicht-start.visustruct":Zk,"../../lessons/diagramme/en/l19-java-zaehlen-loesung.visustruct":Lk,"../../lessons/diagramme/en/l2-ausgabe.visustruct":Wk,"../../lessons/diagramme/en/l2-hallo-loesung.visustruct":Ek,"../../lessons/diagramme/en/l2-zwei-zeilen-loesung.visustruct":Nk,"../../lessons/diagramme/en/l23-java-ergaenzen-loesung.visustruct":Fk,"../../lessons/diagramme/en/l23-java-ergaenzen-start.visustruct":Rk,"../../lessons/diagramme/en/l23-java-nummern-loesung.visustruct":Jk,"../../lessons/diagramme/en/l23-java-nummern-start.visustruct":Gk,"../../lessons/diagramme/en/l24-java-fuchs-loesung.visustruct":Hk,"../../lessons/diagramme/en/l24-java-fuchs-start.visustruct":Vk,"../../lessons/diagramme/en/l24-java-laengster-loesung.visustruct":qk,"../../lessons/diagramme/en/l24-java-laengster-start.visustruct":Qk,"../../lessons/diagramme/en/l25-java-beste-loesung.visustruct":Uk,"../../lessons/diagramme/en/l25-java-beste-start.visustruct":Yk,"../../lessons/diagramme/en/l25-java-schnitt-loesung.visustruct":$k,"../../lessons/diagramme/en/l25-java-schnitt-start.visustruct":Kk,"../../lessons/diagramme/en/l26-java-namen-loesung.visustruct":Xk,"../../lessons/diagramme/en/l26-java-namen-start.visustruct":e7,"../../lessons/diagramme/en/l26-java-schreiben-loesung.visustruct":t7,"../../lessons/diagramme/en/l26-java-schreiben-start.visustruct":n7,"../../lessons/diagramme/en/l27-java-json-loesung.visustruct":i7,"../../lessons/diagramme/en/l27-java-json-start.visustruct":a7,"../../lessons/diagramme/en/l27-java-saetze-loesung.visustruct":s7,"../../lessons/diagramme/en/l27-java-saetze-start.visustruct":r7,"../../lessons/diagramme/en/sim-kino-loesung.visustruct":o7,"../../lessons/diagramme/en/sim-kino-start.visustruct":l7,"../../lessons/diagramme/en/sim-tausch-loesung.visustruct":u7,"../../lessons/diagramme/en/sim-tausch-start.visustruct":m7,"../../lessons/diagramme/en/sim-tausch.visustruct":c7,"../../lessons/diagramme/en/ss-absteigend-loesung.visustruct":d7,"../../lessons/diagramme/en/ss-absteigend-start.visustruct":h7,"../../lessons/diagramme/en/ss-binaere-suche.visustruct":g7,"../../lessons/diagramme/en/ss-bubblesort.visustruct":p7,"../../lessons/diagramme/en/ss-karte-suchen-loesung.visustruct":f7,"../../lessons/diagramme/en/ss-lineare-suche.visustruct":b7,"../../lessons/diagramme/en/uebergabe-bonus-loesung.visustruct":x7,"../../lessons/diagramme/en/uebergabe-bonus-start.visustruct":v7,"../../lessons/diagramme/en/uebergabe-bonus-unterprogramm-loesung.visustruct":y7,"../../lessons/diagramme/en/uebergabe-haupt.visustruct":w7,"../../lessons/diagramme/en/uebergabe-leeren.visustruct":z7,"../../lessons/diagramme/en/uebergabe-verdopple.visustruct":I7,"../../lessons/diagramme/en/vb-abstand-anzeigen-loesung.visustruct":k7,"../../lessons/diagramme/en/vb-abstand-halten-loesung.visustruct":S7,"../../lessons/diagramme/en/vb-alarmanlage-loesung.visustruct":T7,"../../lessons/diagramme/en/vb-ampel-loesung.visustruct":_7,"../../lessons/diagramme/en/vb-ausgang-loesung.visustruct":j7,"../../lessons/diagramme/en/vb-begruessung-loesung.visustruct":C7,"../../lessons/diagramme/en/vb-binaer-zaehlen-loesung.visustruct":A7,"../../lessons/diagramme/en/vb-bis-rot-loesung.visustruct":P7,"../../lessons/diagramme/en/vb-bis-wand-loesung.visustruct":D7,"../../lessons/diagramme/en/vb-bis-ziel-loesung.visustruct":B7,"../../lessons/diagramme/en/vb-buchstaben-loesung.visustruct":O7,"../../lessons/diagramme/en/vb-do-while-loesung.visustruct":M7,"../../lessons/diagramme/en/vb-drei-lichter-loesung.visustruct":Z7,"../../lessons/diagramme/en/vb-dreieck-loesung.visustruct":L7,"../../lessons/diagramme/en/vb-einparken-loesung.visustruct":W7,"../../lessons/diagramme/en/vb-erster-plan-loesung.visustruct":E7,"../../lessons/diagramme/en/vb-farben-loesung.visustruct":N7,"../../lessons/diagramme/en/vb-farbweiche-loesung.visustruct":F7,"../../lessons/diagramme/en/vb-fehler-04-sensoren-start.visustruct":R7,"../../lessons/diagramme/en/vb-fehler-05-bis-zur-wand-start.visustruct":J7,"../../lessons/diagramme/en/vb-fehler-05-erst-fahren-dann-pruefen-start.visustruct":G7,"../../lessons/diagramme/en/vb-fehler-06-abstand-start.visustruct":H7,"../../lessons/diagramme/en/vb-fehler-07-linie-start.visustruct":V7,"../../lessons/diagramme/en/vb-fehler-07-und-oder-start.visustruct":q7,"../../lessons/diagramme/en/vb-fehler-08-farben-start.visustruct":Q7,"../../lessons/diagramme/en/vb-fehler-09-fallauswahl-mbot2-start.visustruct":U7,"../../lessons/diagramme/en/vb-fehler-10-tasten-joystick-start.visustruct":Y7,"../../lessons/diagramme/en/vb-fehler-10-unterbrechen-mit-break-start.visustruct":$7,"../../lessons/diagramme/en/vb-fehler-11-licht-start.visustruct":K7,"../../lessons/diagramme/en/vb-fehler-12-lautstaerke-start.visustruct":X7,"../../lessons/diagramme/en/vb-fehler-13-neigung-start.visustruct":e8,"../../lessons/diagramme/en/vb-fehler-14-leds-start.visustruct":t8,"../../lessons/diagramme/en/vb-fehler-15-einzelne-leds-start.visustruct":n8,"../../lessons/diagramme/en/vb-fehler-16-lautsprecher-start.visustruct":i8,"../../lessons/diagramme/en/vb-fehler-17-arrays-melodie-start.visustruct":a8,"../../lessons/diagramme/en/vb-fehler-18-bildschirm-start.visustruct":s8,"../../lessons/diagramme/en/vb-fehler-19-zeichenketten-start.visustruct":r8,"../../lessons/diagramme/en/vb-fehler-20-motoren-start.visustruct":o8,"../../lessons/diagramme/en/vb-fehler-21-stoppuhr-akku-start.visustruct":l8,"../../lessons/diagramme/en/vb-fehler-22-eigene-methoden-start.visustruct":u8,"../../lessons/diagramme/en/vb-gas-bis-wand-loesung.visustruct":m8,"../../lessons/diagramme/en/vb-gerade-loesung.visustruct":c8,"../../lessons/diagramme/en/vb-hindernis-loesung.visustruct":d8,"../../lessons/diagramme/en/vb-java-akku-loesung.visustruct":h8,"../../lessons/diagramme/en/vb-java-blau-gruen-loesung.visustruct":g8,"../../lessons/diagramme/en/vb-java-blinken-loesung.visustruct":p8,"../../lessons/diagramme/en/vb-java-countdown-loesung.visustruct":f8,"../../lessons/diagramme/en/vb-java-hoeher-loesung.visustruct":b8,"../../lessons/diagramme/en/vb-java-joystick-loesung.visustruct":x8,"../../lessons/diagramme/en/vb-java-laermampel-loesung.visustruct":v8,"../../lessons/diagramme/en/vb-java-lauflicht-loesung.visustruct":y8,"../../lessons/diagramme/en/vb-java-linienfolger-loesung.visustruct":w8,"../../lessons/diagramme/en/vb-java-nachtlicht-ton-loesung.visustruct":z8,"../../lessons/diagramme/en/vb-java-rand-loesung.visustruct":I8,"../../lessons/diagramme/en/vb-java-rechteck-loesung.visustruct":k8,"../../lessons/diagramme/en/vb-java-rechteck-umdrehungen-loesung.visustruct":S8,"../../lessons/diagramme/en/vb-java-schritte-zaehlen-loesung.visustruct":T8,"../../lessons/diagramme/en/vb-java-sicher-fahren-loesung.visustruct":_8,"../../lessons/diagramme/en/vb-java-taste-stopp-loesung.visustruct":j8,"../../lessons/diagramme/en/vb-java-textlaenge-loesung.visustruct":C8,"../../lessons/diagramme/en/vb-java-wand-piep-loesung.visustruct":A8,"../../lessons/diagramme/en/vb-java-wasserwaage-loesung.visustruct":P8,"../../lessons/diagramme/en/vb-klatschen-loesung.visustruct":D8,"../../lessons/diagramme/en/vb-knight-rider-loesung.visustruct":B8,"../../lessons/diagramme/en/vb-l00-bausteine-loesung.visustruct":O8,"../../lessons/diagramme/en/vb-l00-sequenz-loesung.visustruct":M8,"../../lessons/diagramme/en/vb-l03-wachsend-loesung.visustruct":Z8,"../../lessons/diagramme/en/vb-labyrinth-loesung.visustruct":L8,"../../lessons/diagramme/en/vb-laufschrift-loesung.visustruct":W8,"../../lessons/diagramme/en/vb-linienfolger-stopp-loesung.visustruct":E8,"../../lessons/diagramme/en/vb-linienmuster-loesung.visustruct":N8,"../../lessons/diagramme/en/vb-melodie-loesung.visustruct":F8,"../../lessons/diagramme/en/vb-messreihe-loesung.visustruct":R8,"../../lessons/diagramme/en/vb-morsen-loesung.visustruct":J8,"../../lessons/diagramme/en/vb-nachtlicht-loesung.visustruct":G8,"../../lessons/diagramme/en/vb-nachtwaechter-loesung.visustruct":H8,"../../lessons/diagramme/en/vb-notbremse-loesung.visustruct":V8,"../../lessons/diagramme/en/vb-oder-loesung.visustruct":q8,"../../lessons/diagramme/en/vb-quadrat-loesung.visustruct":Q8,"../../lessons/diagramme/en/vb-quadrat-methode-loesung.visustruct":U8,"../../lessons/diagramme/en/vb-quadrat-schleife-loesung.visustruct":Y8,"../../lessons/diagramme/en/vb-quadrat-unterprogramm-loesung.visustruct":$8,"../../lessons/diagramme/en/vb-quadrat-verschachtelt-loesung.visustruct":K8,"../../lessons/diagramme/en/vb-rand-loesung.visustruct":X8,"../../lessons/diagramme/en/vb-schraeglage-loesung.visustruct":eS,"../../lessons/diagramme/en/vb-slalom-loesung.visustruct":tS,"../../lessons/diagramme/en/vb-spirale-falsch-loesung.visustruct":nS,"../../lessons/diagramme/en/vb-spirale-falsch-start.visustruct":iS,"../../lessons/diagramme/en/vb-spirale-loesung.visustruct":aS,"../../lessons/diagramme/en/vb-start-a-loesung.visustruct":sS,"../../lessons/diagramme/en/vb-startsignal-loesung.visustruct":rS,"../../lessons/diagramme/en/vb-strecke-anzeigen-loesung.visustruct":oS,"../../lessons/diagramme/en/vb-tonleiter-loesung.visustruct":lS,"../../lessons/diagramme/en/vb-treppe-loesung.visustruct":uS,"../../lessons/diagramme/en/vb-tunnel-loesung.visustruct":mS,"../../lessons/diagramme/en/vb-ueberladung-umdrehung-loesung.visustruct":cS,"../../lessons/diagramme/en/vb-und-loesung.visustruct":dS,"../../lessons/diagramme/en/vb-variable-seite-loesung.visustruct":hS,"../../lessons/diagramme/en/vb-vier-quadrate-loesung.visustruct":gS,"../../lessons/diagramme/en/vb-wald-loesung.visustruct":pS,"../../lessons/diagramme/en/vb-wand-vorn-loesung.visustruct":fS,"../../lessons/diagramme/en/vb-zentimeter-loesung.visustruct":bS,"../../lessons/diagramme/en/vb-zentimeter-unterprogramm-loesung.visustruct":xS,"../../lessons/diagramme/en/vb-zwei-sekunden-loesung.visustruct":vS,"../../lessons/diagramme/en/zk-initialen-loesung.visustruct":yS,"../../lessons/diagramme/en/zk-mehr.visustruct":wS,"../../lessons/diagramme/en/zk-rueckwaerts-loesung.visustruct":zS,"../../lessons/diagramme/en/zk-split.visustruct":IS,"../../lessons/diagramme/en/zk-woerter-loesung.visustruct":kS,"../../lessons/diagramme/en/zk-zaehlen.visustruct":SS,"../../lessons/diagramme/en/zk-zeichen.visustruct":TS,"../../lessons/diagramme/kino-einmaleins-loesung.visustruct":_S,"../../lessons/diagramme/kino-frei-loesung.visustruct":jS,"../../lessons/diagramme/kino-frei-start.visustruct":CS,"../../lessons/diagramme/kino-karte-loesung.visustruct":AS,"../../lessons/diagramme/kino-karte-start.visustruct":PS,"../../lessons/diagramme/kino-saalplan.visustruct":DS,"../../lessons/diagramme/kino-verkaufen.visustruct":BS,"../../lessons/diagramme/l04-gross-klein-loesung.visustruct":OS,"../../lessons/diagramme/l04-gross-klein-start.visustruct":MS,"../../lessons/diagramme/l04-java-fehler-loesung.visustruct":ZS,"../../lessons/diagramme/l04-java-fehler-start.visustruct":LS,"../../lessons/diagramme/l04-java-laeuft-nicht-loesung.visustruct":WS,"../../lessons/diagramme/l04-java-laeuft-nicht-start.visustruct":ES,"../../lessons/diagramme/l04-java-steckbrief-loesung.visustruct":NS,"../../lessons/diagramme/l04-rechnen.visustruct":FS,"../../lessons/diagramme/l04-reihenfolge-loesung.visustruct":RS,"../../lessons/diagramme/l04-reihenfolge-start.visustruct":JS,"../../lessons/diagramme/l04-tauschen-loesung.visustruct":GS,"../../lessons/diagramme/l04-tauschen-start.visustruct":HS,"../../lessons/diagramme/l04-tauschen.visustruct":VS,"../../lessons/diagramme/l05-datentypen.visustruct":qS,"../../lessons/diagramme/l05-division.visustruct":QS,"../../lessons/diagramme/l05-einkauf-loesung.visustruct":US,"../../lessons/diagramme/l05-java-fehler-loesung.visustruct":YS,"../../lessons/diagramme/l05-java-fehler-start.visustruct":$S,"../../lessons/diagramme/l05-java-kino-loesung.visustruct":KS,"../../lessons/diagramme/l05-java-laeuft-nicht-loesung.visustruct":XS,"../../lessons/diagramme/l05-java-laeuft-nicht-start.visustruct":eT,"../../lessons/diagramme/l05-rechteck-loesung.visustruct":tT,"../../lessons/diagramme/l05-sekunden-loesung.visustruct":nT,"../../lessons/diagramme/l05-sekunden-start.visustruct":iT,"../../lessons/diagramme/l05-sequenz.visustruct":aT,"../../lessons/diagramme/l06-begruessung-loesung.visustruct":sT,"../../lessons/diagramme/l06-eva.visustruct":rT,"../../lessons/diagramme/l06-java-fehler-loesung.visustruct":oT,"../../lessons/diagramme/l06-java-fehler-start.visustruct":lT,"../../lessons/diagramme/l06-java-laeuft-nicht-loesung.visustruct":uT,"../../lessons/diagramme/l06-java-laeuft-nicht-start.visustruct":mT,"../../lessons/diagramme/l06-java-tage-loesung.visustruct":cT,"../../lessons/diagramme/l06-mittelwert-loesung.visustruct":dT,"../../lessons/diagramme/l06-rechner-loesung.visustruct":hT,"../../lessons/diagramme/l07-alter-pruefen.visustruct":gT,"../../lessons/diagramme/l07-betrag-loesung.visustruct":pT,"../../lessons/diagramme/l07-gerade-loesung.visustruct":fT,"../../lessons/diagramme/l07-java-fehler-loesung.visustruct":bT,"../../lessons/diagramme/l07-java-fehler-start.visustruct":xT,"../../lessons/diagramme/l07-java-laeuft-nicht-loesung.visustruct":vT,"../../lessons/diagramme/l07-java-laeuft-nicht-start.visustruct":yT,"../../lessons/diagramme/l07-java-pizza-loesung.visustruct":wT,"../../lessons/diagramme/l07-java-pizza-start.visustruct":zT,"../../lessons/diagramme/l07-maximum-loesung.visustruct":IT,"../../lessons/diagramme/l07-rabatt.visustruct":kT,"../../lessons/diagramme/l08-gueltig-loesung.visustruct":ST,"../../lessons/diagramme/l08-java-bestanden-loesung.visustruct":TT,"../../lessons/diagramme/l08-java-fehler-loesung.visustruct":_T,"../../lessons/diagramme/l08-java-fehler-start.visustruct":jT,"../../lessons/diagramme/l08-java-laeuft-nicht-loesung.visustruct":CT,"../../lessons/diagramme/l08-java-laeuft-nicht-start.visustruct":AT,"../../lessons/diagramme/l08-jugendticket.visustruct":PT,"../../lessons/diagramme/l08-note.visustruct":DT,"../../lessons/diagramme/l08-schaltjahr-loesung.visustruct":BT,"../../lessons/diagramme/l08-wochenende-loesung.visustruct":OT,"../../lessons/diagramme/l09-ampel.visustruct":MT,"../../lessons/diagramme/l09-automat.visustruct":ZT,"../../lessons/diagramme/l09-java-fehler-loesung.visustruct":LT,"../../lessons/diagramme/l09-java-fehler-start.visustruct":WT,"../../lessons/diagramme/l09-java-laeuft-nicht-loesung.visustruct":ET,"../../lessons/diagramme/l09-java-laeuft-nicht-start.visustruct":NT,"../../lessons/diagramme/l09-java-schule-loesung.visustruct":FT,"../../lessons/diagramme/l09-note-loesung.visustruct":RT,"../../lessons/diagramme/l09-rechner-loesung.visustruct":JT,"../../lessons/diagramme/l09-verschachtelt.visustruct":GT,"../../lessons/diagramme/l1-grundbausteine.visustruct":HT,"../../lessons/diagramme/l1-sequenz.visustruct":VT,"../../lessons/diagramme/l1-tee.visustruct":qT,"../../lessons/diagramme/l1-verzweigung.visustruct":QT,"../../lessons/diagramme/l1-wiederholung.visustruct":UT,"../../lessons/diagramme/l10-bis-n-loesung.visustruct":YT,"../../lessons/diagramme/l10-countdown.visustruct":$T,"../../lessons/diagramme/l10-endlos.visustruct":KT,"../../lessons/diagramme/l10-fakultaet.visustruct":XT,"../../lessons/diagramme/l10-java-fehler-loesung.visustruct":e_,"../../lessons/diagramme/l10-java-fehler-start.visustruct":t_,"../../lessons/diagramme/l10-java-laeuft-nicht-loesung.visustruct":n_,"../../lessons/diagramme/l10-java-laeuft-nicht-start.visustruct":i_,"../../lessons/diagramme/l10-java-wuerfel-loesung.visustruct":a_,"../../lessons/diagramme/l10-verdoppeln-loesung.visustruct":s_,"../../lessons/diagramme/l11-eingabe-pruefen.visustruct":r_,"../../lessons/diagramme/l11-einmal.visustruct":o_,"../../lessons/diagramme/l11-java-fehler-loesung.visustruct":l_,"../../lessons/diagramme/l11-java-fehler-start.visustruct":u_,"../../lessons/diagramme/l11-java-gerade-loesung.visustruct":m_,"../../lessons/diagramme/l11-java-laeuft-nicht-loesung.visustruct":c_,"../../lessons/diagramme/l11-java-laeuft-nicht-start.visustruct":d_,"../../lessons/diagramme/l11-note-loesung.visustruct":h_,"../../lessons/diagramme/l11-summe-loesung.visustruct":g_,"../../lessons/diagramme/l12-countdown-loesung.visustruct":p_,"../../lessons/diagramme/l12-einmaleins-loesung.visustruct":f_,"../../lessons/diagramme/l12-eins-bis-fuenf.visustruct":b_,"../../lessons/diagramme/l12-java-fehler-loesung.visustruct":x_,"../../lessons/diagramme/l12-java-fehler-start.visustruct":v_,"../../lessons/diagramme/l12-java-laeuft-nicht-loesung.visustruct":y_,"../../lessons/diagramme/l12-java-laeuft-nicht-start.visustruct":w_,"../../lessons/diagramme/l12-java-verdoppeln-loesung.visustruct":z_,"../../lessons/diagramme/l12-summe.visustruct":I_,"../../lessons/diagramme/l13-dreieck.visustruct":k_,"../../lessons/diagramme/l13-gerade-eingaben-loesung.visustruct":S_,"../../lessons/diagramme/l13-gerade-zaehlen.visustruct":T_,"../../lessons/diagramme/l13-java-fehler-loesung.visustruct":__,"../../lessons/diagramme/l13-java-fehler-start.visustruct":j_,"../../lessons/diagramme/l13-java-laeuft-nicht-loesung.visustruct":C_,"../../lessons/diagramme/l13-java-laeuft-nicht-start.visustruct":A_,"../../lessons/diagramme/l13-java-quadrate-loesung.visustruct":P_,"../../lessons/diagramme/l13-rechteck-loesung.visustruct":D_,"../../lessons/diagramme/l14-array-durchlaufen.visustruct":B_,"../../lessons/diagramme/l14-erster-letzter-loesung.visustruct":O_,"../../lessons/diagramme/l14-java-fehler-loesung.visustruct":M_,"../../lessons/diagramme/l14-java-fehler-start.visustruct":Z_,"../../lessons/diagramme/l14-java-laeuft-nicht-loesung.visustruct":L_,"../../lessons/diagramme/l14-java-laeuft-nicht-start.visustruct":W_,"../../lessons/diagramme/l14-java-treppe-loesung.visustruct":E_,"../../lessons/diagramme/l14-namen-eingeben.visustruct":N_,"../../lessons/diagramme/l14-rueckwaerts-loesung.visustruct":F_,"../../lessons/diagramme/l14-summe-max-loesung.visustruct":R_,"../../lessons/diagramme/l14-summe-maximum.visustruct":J_,"../../lessons/diagramme/l15-bis-null-loesung.visustruct":G_,"../../lessons/diagramme/l15-endlos-aussprung.visustruct":H_,"../../lessons/diagramme/l15-flaeche-loesung.visustruct":V_,"../../lessons/diagramme/l15-flaeche-unterprogramm-loesung.visustruct":q_,"../../lessons/diagramme/l15-hauptprogramm.visustruct":Q_,"../../lessons/diagramme/l15-java-fehler-loesung.visustruct":U_,"../../lessons/diagramme/l15-java-fehler-start.visustruct":Y_,"../../lessons/diagramme/l15-java-laeuft-nicht-loesung.visustruct":$_,"../../lessons/diagramme/l15-java-laeuft-nicht-start.visustruct":K_,"../../lessons/diagramme/l15-java-noten-loesung.visustruct":X_,"../../lessons/diagramme/l15-quadrat-haupt.visustruct":ej,"../../lessons/diagramme/l15-quadrat.visustruct":tj,"../../lessons/diagramme/l15-titel-loesung.visustruct":nj,"../../lessons/diagramme/l15-unterprogramm.visustruct":ij,"../../lessons/diagramme/l15-zeige-summe-haupt.visustruct":aj,"../../lessons/diagramme/l15-zeige-summe.visustruct":sj,"../../lessons/diagramme/l16-countdown-loesung.visustruct":rj,"../../lessons/diagramme/l16-countdown-start.visustruct":oj,"../../lessons/diagramme/l16-java-fehler-loesung.visustruct":lj,"../../lessons/diagramme/l16-java-fehler-start.visustruct":uj,"../../lessons/diagramme/l16-java-laeuft-nicht-loesung.visustruct":mj,"../../lessons/diagramme/l16-java-laeuft-nicht-start.visustruct":cj,"../../lessons/diagramme/l16-java-punkte-loesung.visustruct":dj,"../../lessons/diagramme/l16-schreibtisch.visustruct":hj,"../../lessons/diagramme/l16-summe-loesung.visustruct":gj,"../../lessons/diagramme/l16-summe-start.visustruct":pj,"../../lessons/diagramme/l17-beispiel.visustruct":fj,"../../lessons/diagramme/l17-fakultaet-loesung.visustruct":bj,"../../lessons/diagramme/l17-java-brief-loesung.visustruct":xj,"../../lessons/diagramme/l17-java-brief-start.visustruct":vj,"../../lessons/diagramme/l17-java-fehler-loesung.visustruct":yj,"../../lessons/diagramme/l17-java-fehler-start.visustruct":wj,"../../lessons/diagramme/l17-java-laeuft-nicht-loesung.visustruct":zj,"../../lessons/diagramme/l17-java-laeuft-nicht-start.visustruct":Ij,"../../lessons/diagramme/l17-java-passwort-loesung.visustruct":kj,"../../lessons/diagramme/l17-ticket-loesung.visustruct":Sj,"../../lessons/diagramme/l18-beispiel.visustruct":Tj,"../../lessons/diagramme/l18-java-fehler-loesung.visustruct":_j,"../../lessons/diagramme/l18-java-fehler-start.visustruct":jj,"../../lessons/diagramme/l18-java-kasse-loesung.visustruct":Cj,"../../lessons/diagramme/l18-js-loesung.visustruct":Aj,"../../lessons/diagramme/l18-python-loesung.visustruct":Pj,"../../lessons/diagramme/l19-java-fehler-loesung.visustruct":Dj,"../../lessons/diagramme/l19-java-fehler-start.visustruct":Bj,"../../lessons/diagramme/l19-java-laeuft-nicht-loesung.visustruct":Oj,"../../lessons/diagramme/l19-java-laeuft-nicht-start.visustruct":Mj,"../../lessons/diagramme/l19-java-zaehlen-loesung.visustruct":Zj,"../../lessons/diagramme/l2-ausgabe.visustruct":Lj,"../../lessons/diagramme/l2-hallo-loesung.visustruct":Wj,"../../lessons/diagramme/l2-zwei-zeilen-loesung.visustruct":Ej,"../../lessons/diagramme/l20-countdown-loesung.visustruct":Nj,"../../lessons/diagramme/l23-java-ergaenzen-loesung.visustruct":Fj,"../../lessons/diagramme/l23-java-ergaenzen-start.visustruct":Rj,"../../lessons/diagramme/l23-java-nummern-loesung.visustruct":Jj,"../../lessons/diagramme/l23-java-nummern-start.visustruct":Gj,"../../lessons/diagramme/l24-java-fuchs-loesung.visustruct":Hj,"../../lessons/diagramme/l24-java-fuchs-start.visustruct":Vj,"../../lessons/diagramme/l24-java-laengster-loesung.visustruct":qj,"../../lessons/diagramme/l24-java-laengster-start.visustruct":Qj,"../../lessons/diagramme/l25-java-beste-loesung.visustruct":Uj,"../../lessons/diagramme/l25-java-beste-start.visustruct":Yj,"../../lessons/diagramme/l25-java-schnitt-loesung.visustruct":$j,"../../lessons/diagramme/l25-java-schnitt-start.visustruct":Kj,"../../lessons/diagramme/l26-java-namen-loesung.visustruct":Xj,"../../lessons/diagramme/l26-java-namen-start.visustruct":eC,"../../lessons/diagramme/l26-java-schreiben-loesung.visustruct":tC,"../../lessons/diagramme/l26-java-schreiben-start.visustruct":nC,"../../lessons/diagramme/l27-java-json-loesung.visustruct":iC,"../../lessons/diagramme/l27-java-json-start.visustruct":aC,"../../lessons/diagramme/l27-java-saetze-loesung.visustruct":sC,"../../lessons/diagramme/l27-java-saetze-start.visustruct":rC,"../../lessons/diagramme/pt/aufgabe-alter-haupt-loesung.visustruct":oC,"../../lessons/diagramme/pt/aufgabe-alter-unterprogramm-loesung.visustruct":lC,"../../lessons/diagramme/pt/aufgabe-ballwurf-loesung.visustruct":uC,"../../lessons/diagramme/pt/aufgabe-ballwurf-start.visustruct":mC,"../../lessons/diagramme/pt/aufgabe-bestenliste-loesung.visustruct":cC,"../../lessons/diagramme/pt/aufgabe-binaer-loesung.visustruct":dC,"../../lessons/diagramme/pt/aufgabe-caesar-array-loesung.visustruct":hC,"../../lessons/diagramme/pt/aufgabe-caesar-array-start.visustruct":gC,"../../lessons/diagramme/pt/aufgabe-caesar-ascii-loesung.visustruct":pC,"../../lessons/diagramme/pt/aufgabe-caesar-entschluesseln-loesung.visustruct":fC,"../../lessons/diagramme/pt/aufgabe-collatz-loesung.visustruct":bC,"../../lessons/diagramme/pt/aufgabe-durchschnitt-loesung.visustruct":xC,"../../lessons/diagramme/pt/aufgabe-fibonacci-loesung.visustruct":vC,"../../lessons/diagramme/pt/aufgabe-gerade-loesung.visustruct":yC,"../../lessons/diagramme/pt/aufgabe-mehrwertsteuer-loesung.visustruct":wC,"../../lessons/diagramme/pt/aufgabe-pin-java-loesung.visustruct":zC,"../../lessons/diagramme/pt/aufgabe-pin-loesung.visustruct":IC,"../../lessons/diagramme/pt/aufgabe-rechner-loesung.visustruct":kC,"../../lessons/diagramme/pt/aufgabe-schiffe-loesung.visustruct":SC,"../../lessons/diagramme/pt/aufgabe-schiffe-start.visustruct":TC,"../../lessons/diagramme/pt/aufgabe-speisekarte-loesung.visustruct":_C,"../../lessons/diagramme/pt/aufgabe-summe-loesung.visustruct":jC,"../../lessons/diagramme/pt/aufgabe-tafeldienst-loesung.visustruct":CC,"../../lessons/diagramme/pt/aufgabe-verdoppeln-loesung.visustruct":AC,"../../lessons/diagramme/pt/aufgabe-verleih-java-loesung.visustruct":PC,"../../lessons/diagramme/pt/aufgabe-verleih-loesung.visustruct":DC,"../../lessons/diagramme/pt/aufgabe-vokabeln-loesung.visustruct":BC,"../../lessons/diagramme/pt/aufgabe-vokabeln-start.visustruct":OC,"../../lessons/diagramme/pt/aufgabe-volljaehrig-loesung.visustruct":MC,"../../lessons/diagramme/pt/dt-buffered.visustruct":ZC,"../../lessons/diagramme/pt/dt-csv.visustruct":LC,"../../lessons/diagramme/pt/dt-json.visustruct":WC,"../../lessons/diagramme/pt/dt-lesen.visustruct":EC,"../../lessons/diagramme/pt/kino-einmaleins-loesung.visustruct":NC,"../../lessons/diagramme/pt/kino-frei-loesung.visustruct":FC,"../../lessons/diagramme/pt/kino-frei-start.visustruct":RC,"../../lessons/diagramme/pt/kino-karte-loesung.visustruct":JC,"../../lessons/diagramme/pt/kino-karte-start.visustruct":GC,"../../lessons/diagramme/pt/kino-saalplan.visustruct":HC,"../../lessons/diagramme/pt/kino-verkaufen.visustruct":VC,"../../lessons/diagramme/pt/l04-gross-klein-loesung.visustruct":qC,"../../lessons/diagramme/pt/l04-gross-klein-start.visustruct":QC,"../../lessons/diagramme/pt/l04-java-fehler-loesung.visustruct":UC,"../../lessons/diagramme/pt/l04-java-fehler-start.visustruct":YC,"../../lessons/diagramme/pt/l04-java-laeuft-nicht-loesung.visustruct":$C,"../../lessons/diagramme/pt/l04-java-laeuft-nicht-start.visustruct":KC,"../../lessons/diagramme/pt/l04-java-steckbrief-loesung.visustruct":XC,"../../lessons/diagramme/pt/l04-rechnen.visustruct":eA,"../../lessons/diagramme/pt/l04-reihenfolge-loesung.visustruct":tA,"../../lessons/diagramme/pt/l04-reihenfolge-start.visustruct":nA,"../../lessons/diagramme/pt/l04-tauschen-loesung.visustruct":iA,"../../lessons/diagramme/pt/l04-tauschen-start.visustruct":aA,"../../lessons/diagramme/pt/l04-tauschen.visustruct":sA,"../../lessons/diagramme/pt/l05-datentypen.visustruct":rA,"../../lessons/diagramme/pt/l05-division.visustruct":oA,"../../lessons/diagramme/pt/l05-einkauf-loesung.visustruct":lA,"../../lessons/diagramme/pt/l05-java-fehler-loesung.visustruct":uA,"../../lessons/diagramme/pt/l05-java-fehler-start.visustruct":mA,"../../lessons/diagramme/pt/l05-java-kino-loesung.visustruct":cA,"../../lessons/diagramme/pt/l05-java-laeuft-nicht-loesung.visustruct":dA,"../../lessons/diagramme/pt/l05-java-laeuft-nicht-start.visustruct":hA,"../../lessons/diagramme/pt/l05-rechteck-loesung.visustruct":gA,"../../lessons/diagramme/pt/l05-sekunden-loesung.visustruct":pA,"../../lessons/diagramme/pt/l05-sekunden-start.visustruct":fA,"../../lessons/diagramme/pt/l05-sequenz.visustruct":bA,"../../lessons/diagramme/pt/l06-begruessung-loesung.visustruct":xA,"../../lessons/diagramme/pt/l06-eva.visustruct":vA,"../../lessons/diagramme/pt/l06-java-fehler-loesung.visustruct":yA,"../../lessons/diagramme/pt/l06-java-fehler-start.visustruct":wA,"../../lessons/diagramme/pt/l06-java-laeuft-nicht-loesung.visustruct":zA,"../../lessons/diagramme/pt/l06-java-laeuft-nicht-start.visustruct":IA,"../../lessons/diagramme/pt/l06-java-tage-loesung.visustruct":kA,"../../lessons/diagramme/pt/l06-mittelwert-loesung.visustruct":SA,"../../lessons/diagramme/pt/l06-rechner-loesung.visustruct":TA,"../../lessons/diagramme/pt/l07-alter-pruefen.visustruct":_A,"../../lessons/diagramme/pt/l07-betrag-loesung.visustruct":jA,"../../lessons/diagramme/pt/l07-gerade-loesung.visustruct":CA,"../../lessons/diagramme/pt/l07-java-fehler-loesung.visustruct":AA,"../../lessons/diagramme/pt/l07-java-fehler-start.visustruct":PA,"../../lessons/diagramme/pt/l07-java-laeuft-nicht-loesung.visustruct":DA,"../../lessons/diagramme/pt/l07-java-laeuft-nicht-start.visustruct":BA,"../../lessons/diagramme/pt/l07-java-pizza-loesung.visustruct":OA,"../../lessons/diagramme/pt/l07-java-pizza-start.visustruct":MA,"../../lessons/diagramme/pt/l07-maximum-loesung.visustruct":ZA,"../../lessons/diagramme/pt/l07-rabatt.visustruct":LA,"../../lessons/diagramme/pt/l08-gueltig-loesung.visustruct":WA,"../../lessons/diagramme/pt/l08-java-bestanden-loesung.visustruct":EA,"../../lessons/diagramme/pt/l08-java-fehler-loesung.visustruct":NA,"../../lessons/diagramme/pt/l08-java-fehler-start.visustruct":FA,"../../lessons/diagramme/pt/l08-java-laeuft-nicht-loesung.visustruct":RA,"../../lessons/diagramme/pt/l08-java-laeuft-nicht-start.visustruct":JA,"../../lessons/diagramme/pt/l08-jugendticket.visustruct":GA,"../../lessons/diagramme/pt/l08-note.visustruct":HA,"../../lessons/diagramme/pt/l08-schaltjahr-loesung.visustruct":VA,"../../lessons/diagramme/pt/l08-wochenende-loesung.visustruct":qA,"../../lessons/diagramme/pt/l09-ampel.visustruct":QA,"../../lessons/diagramme/pt/l09-automat.visustruct":UA,"../../lessons/diagramme/pt/l09-java-fehler-loesung.visustruct":YA,"../../lessons/diagramme/pt/l09-java-fehler-start.visustruct":$A,"../../lessons/diagramme/pt/l09-java-laeuft-nicht-loesung.visustruct":KA,"../../lessons/diagramme/pt/l09-java-laeuft-nicht-start.visustruct":XA,"../../lessons/diagramme/pt/l09-java-schule-loesung.visustruct":eP,"../../lessons/diagramme/pt/l09-note-loesung.visustruct":tP,"../../lessons/diagramme/pt/l09-rechner-loesung.visustruct":nP,"../../lessons/diagramme/pt/l09-verschachtelt.visustruct":iP,"../../lessons/diagramme/pt/l1-grundbausteine.visustruct":aP,"../../lessons/diagramme/pt/l1-sequenz.visustruct":sP,"../../lessons/diagramme/pt/l1-tee.visustruct":rP,"../../lessons/diagramme/pt/l1-verzweigung.visustruct":oP,"../../lessons/diagramme/pt/l1-wiederholung.visustruct":lP,"../../lessons/diagramme/pt/l10-bis-n-loesung.visustruct":uP,"../../lessons/diagramme/pt/l10-countdown.visustruct":mP,"../../lessons/diagramme/pt/l10-endlos.visustruct":cP,"../../lessons/diagramme/pt/l10-fakultaet.visustruct":dP,"../../lessons/diagramme/pt/l10-java-fehler-loesung.visustruct":hP,"../../lessons/diagramme/pt/l10-java-fehler-start.visustruct":gP,"../../lessons/diagramme/pt/l10-java-laeuft-nicht-loesung.visustruct":pP,"../../lessons/diagramme/pt/l10-java-laeuft-nicht-start.visustruct":fP,"../../lessons/diagramme/pt/l10-java-wuerfel-loesung.visustruct":bP,"../../lessons/diagramme/pt/l10-verdoppeln-loesung.visustruct":xP,"../../lessons/diagramme/pt/l11-eingabe-pruefen.visustruct":vP,"../../lessons/diagramme/pt/l11-einmal.visustruct":yP,"../../lessons/diagramme/pt/l11-java-fehler-loesung.visustruct":wP,"../../lessons/diagramme/pt/l11-java-fehler-start.visustruct":zP,"../../lessons/diagramme/pt/l11-java-gerade-loesung.visustruct":IP,"../../lessons/diagramme/pt/l11-java-laeuft-nicht-loesung.visustruct":kP,"../../lessons/diagramme/pt/l11-java-laeuft-nicht-start.visustruct":SP,"../../lessons/diagramme/pt/l11-note-loesung.visustruct":TP,"../../lessons/diagramme/pt/l11-summe-loesung.visustruct":_P,"../../lessons/diagramme/pt/l12-countdown-loesung.visustruct":jP,"../../lessons/diagramme/pt/l12-einmaleins-loesung.visustruct":CP,"../../lessons/diagramme/pt/l12-eins-bis-fuenf.visustruct":AP,"../../lessons/diagramme/pt/l12-java-fehler-loesung.visustruct":PP,"../../lessons/diagramme/pt/l12-java-fehler-start.visustruct":DP,"../../lessons/diagramme/pt/l12-java-laeuft-nicht-loesung.visustruct":BP,"../../lessons/diagramme/pt/l12-java-laeuft-nicht-start.visustruct":OP,"../../lessons/diagramme/pt/l12-java-verdoppeln-loesung.visustruct":MP,"../../lessons/diagramme/pt/l12-summe.visustruct":ZP,"../../lessons/diagramme/pt/l13-dreieck.visustruct":LP,"../../lessons/diagramme/pt/l13-gerade-eingaben-loesung.visustruct":WP,"../../lessons/diagramme/pt/l13-gerade-zaehlen.visustruct":EP,"../../lessons/diagramme/pt/l13-java-fehler-loesung.visustruct":NP,"../../lessons/diagramme/pt/l13-java-fehler-start.visustruct":FP,"../../lessons/diagramme/pt/l13-java-laeuft-nicht-loesung.visustruct":RP,"../../lessons/diagramme/pt/l13-java-laeuft-nicht-start.visustruct":JP,"../../lessons/diagramme/pt/l13-java-quadrate-loesung.visustruct":GP,"../../lessons/diagramme/pt/l13-rechteck-loesung.visustruct":HP,"../../lessons/diagramme/pt/l14-array-durchlaufen.visustruct":VP,"../../lessons/diagramme/pt/l14-erster-letzter-loesung.visustruct":qP,"../../lessons/diagramme/pt/l14-java-fehler-loesung.visustruct":QP,"../../lessons/diagramme/pt/l14-java-fehler-start.visustruct":UP,"../../lessons/diagramme/pt/l14-java-laeuft-nicht-loesung.visustruct":YP,"../../lessons/diagramme/pt/l14-java-laeuft-nicht-start.visustruct":$P,"../../lessons/diagramme/pt/l14-java-treppe-loesung.visustruct":KP,"../../lessons/diagramme/pt/l14-namen-eingeben.visustruct":XP,"../../lessons/diagramme/pt/l14-rueckwaerts-loesung.visustruct":eD,"../../lessons/diagramme/pt/l14-summe-max-loesung.visustruct":tD,"../../lessons/diagramme/pt/l14-summe-maximum.visustruct":nD,"../../lessons/diagramme/pt/l15-bis-null-loesung.visustruct":iD,"../../lessons/diagramme/pt/l15-endlos-aussprung.visustruct":aD,"../../lessons/diagramme/pt/l15-flaeche-loesung.visustruct":sD,"../../lessons/diagramme/pt/l15-hauptprogramm.visustruct":rD,"../../lessons/diagramme/pt/l15-java-fehler-loesung.visustruct":oD,"../../lessons/diagramme/pt/l15-java-fehler-start.visustruct":lD,"../../lessons/diagramme/pt/l15-java-laeuft-nicht-loesung.visustruct":uD,"../../lessons/diagramme/pt/l15-java-laeuft-nicht-start.visustruct":mD,"../../lessons/diagramme/pt/l15-java-noten-loesung.visustruct":cD,"../../lessons/diagramme/pt/l15-quadrat-haupt.visustruct":dD,"../../lessons/diagramme/pt/l15-quadrat.visustruct":hD,"../../lessons/diagramme/pt/l15-titel-loesung.visustruct":gD,"../../lessons/diagramme/pt/l15-unterprogramm.visustruct":pD,"../../lessons/diagramme/pt/l15-zeige-summe-haupt.visustruct":fD,"../../lessons/diagramme/pt/l15-zeige-summe.visustruct":bD,"../../lessons/diagramme/pt/l16-countdown-loesung.visustruct":xD,"../../lessons/diagramme/pt/l16-countdown-start.visustruct":vD,"../../lessons/diagramme/pt/l16-java-fehler-loesung.visustruct":yD,"../../lessons/diagramme/pt/l16-java-fehler-start.visustruct":wD,"../../lessons/diagramme/pt/l16-java-laeuft-nicht-loesung.visustruct":zD,"../../lessons/diagramme/pt/l16-java-laeuft-nicht-start.visustruct":ID,"../../lessons/diagramme/pt/l16-java-punkte-loesung.visustruct":kD,"../../lessons/diagramme/pt/l16-schreibtisch.visustruct":SD,"../../lessons/diagramme/pt/l16-summe-loesung.visustruct":TD,"../../lessons/diagramme/pt/l16-summe-start.visustruct":_D,"../../lessons/diagramme/pt/l17-beispiel.visustruct":jD,"../../lessons/diagramme/pt/l17-fakultaet-loesung.visustruct":CD,"../../lessons/diagramme/pt/l17-java-brief-loesung.visustruct":AD,"../../lessons/diagramme/pt/l17-java-brief-start.visustruct":PD,"../../lessons/diagramme/pt/l17-java-fehler-loesung.visustruct":DD,"../../lessons/diagramme/pt/l17-java-fehler-start.visustruct":BD,"../../lessons/diagramme/pt/l17-java-laeuft-nicht-loesung.visustruct":OD,"../../lessons/diagramme/pt/l17-java-laeuft-nicht-start.visustruct":MD,"../../lessons/diagramme/pt/l17-java-passwort-loesung.visustruct":ZD,"../../lessons/diagramme/pt/l17-ticket-loesung.visustruct":LD,"../../lessons/diagramme/pt/l18-beispiel.visustruct":WD,"../../lessons/diagramme/pt/l18-java-fehler-loesung.visustruct":ED,"../../lessons/diagramme/pt/l18-java-fehler-start.visustruct":ND,"../../lessons/diagramme/pt/l18-java-kasse-loesung.visustruct":FD,"../../lessons/diagramme/pt/l18-js-loesung.visustruct":RD,"../../lessons/diagramme/pt/l18-python-loesung.visustruct":JD,"../../lessons/diagramme/pt/l19-java-fehler-loesung.visustruct":GD,"../../lessons/diagramme/pt/l19-java-fehler-start.visustruct":HD,"../../lessons/diagramme/pt/l19-java-laeuft-nicht-loesung.visustruct":VD,"../../lessons/diagramme/pt/l19-java-laeuft-nicht-start.visustruct":qD,"../../lessons/diagramme/pt/l19-java-zaehlen-loesung.visustruct":QD,"../../lessons/diagramme/pt/l2-ausgabe.visustruct":UD,"../../lessons/diagramme/pt/l2-hallo-loesung.visustruct":YD,"../../lessons/diagramme/pt/l2-zwei-zeilen-loesung.visustruct":$D,"../../lessons/diagramme/pt/l23-java-ergaenzen-loesung.visustruct":KD,"../../lessons/diagramme/pt/l23-java-ergaenzen-start.visustruct":XD,"../../lessons/diagramme/pt/l23-java-nummern-loesung.visustruct":eB,"../../lessons/diagramme/pt/l23-java-nummern-start.visustruct":tB,"../../lessons/diagramme/pt/l24-java-fuchs-loesung.visustruct":nB,"../../lessons/diagramme/pt/l24-java-fuchs-start.visustruct":iB,"../../lessons/diagramme/pt/l24-java-laengster-loesung.visustruct":aB,"../../lessons/diagramme/pt/l24-java-laengster-start.visustruct":sB,"../../lessons/diagramme/pt/l25-java-beste-loesung.visustruct":rB,"../../lessons/diagramme/pt/l25-java-beste-start.visustruct":oB,"../../lessons/diagramme/pt/l25-java-schnitt-loesung.visustruct":lB,"../../lessons/diagramme/pt/l25-java-schnitt-start.visustruct":uB,"../../lessons/diagramme/pt/l26-java-namen-loesung.visustruct":mB,"../../lessons/diagramme/pt/l26-java-namen-start.visustruct":cB,"../../lessons/diagramme/pt/l26-java-schreiben-loesung.visustruct":dB,"../../lessons/diagramme/pt/l26-java-schreiben-start.visustruct":hB,"../../lessons/diagramme/pt/l27-java-json-loesung.visustruct":gB,"../../lessons/diagramme/pt/l27-java-json-start.visustruct":pB,"../../lessons/diagramme/pt/l27-java-saetze-loesung.visustruct":fB,"../../lessons/diagramme/pt/l27-java-saetze-start.visustruct":bB,"../../lessons/diagramme/pt/sim-kino-loesung.visustruct":xB,"../../lessons/diagramme/pt/sim-kino-start.visustruct":vB,"../../lessons/diagramme/pt/sim-tausch-loesung.visustruct":yB,"../../lessons/diagramme/pt/sim-tausch-start.visustruct":wB,"../../lessons/diagramme/pt/sim-tausch.visustruct":zB,"../../lessons/diagramme/pt/ss-absteigend-loesung.visustruct":IB,"../../lessons/diagramme/pt/ss-absteigend-start.visustruct":kB,"../../lessons/diagramme/pt/ss-binaere-suche.visustruct":SB,"../../lessons/diagramme/pt/ss-bubblesort.visustruct":TB,"../../lessons/diagramme/pt/ss-karte-suchen-loesung.visustruct":_B,"../../lessons/diagramme/pt/ss-lineare-suche.visustruct":jB,"../../lessons/diagramme/pt/uebergabe-bonus-loesung.visustruct":CB,"../../lessons/diagramme/pt/uebergabe-bonus-start.visustruct":AB,"../../lessons/diagramme/pt/uebergabe-bonus-unterprogramm-loesung.visustruct":PB,"../../lessons/diagramme/pt/uebergabe-haupt.visustruct":DB,"../../lessons/diagramme/pt/uebergabe-leeren.visustruct":BB,"../../lessons/diagramme/pt/uebergabe-verdopple.visustruct":OB,"../../lessons/diagramme/pt/zk-initialen-loesung.visustruct":MB,"../../lessons/diagramme/pt/zk-mehr.visustruct":ZB,"../../lessons/diagramme/pt/zk-rueckwaerts-loesung.visustruct":LB,"../../lessons/diagramme/pt/zk-split.visustruct":WB,"../../lessons/diagramme/pt/zk-woerter-loesung.visustruct":EB,"../../lessons/diagramme/pt/zk-zaehlen.visustruct":NB,"../../lessons/diagramme/pt/zk-zeichen.visustruct":FB,"../../lessons/diagramme/sim-kino-loesung.visustruct":RB,"../../lessons/diagramme/sim-kino-start.visustruct":JB,"../../lessons/diagramme/sim-tausch-loesung.visustruct":GB,"../../lessons/diagramme/sim-tausch-start.visustruct":HB,"../../lessons/diagramme/sim-tausch.visustruct":VB,"../../lessons/diagramme/ss-absteigend-loesung.visustruct":qB,"../../lessons/diagramme/ss-absteigend-start.visustruct":QB,"../../lessons/diagramme/ss-binaere-suche.visustruct":UB,"../../lessons/diagramme/ss-bubblesort.visustruct":YB,"../../lessons/diagramme/ss-karte-suchen-loesung.visustruct":$B,"../../lessons/diagramme/ss-lineare-suche.visustruct":KB,"../../lessons/diagramme/uebergabe-bonus-loesung.visustruct":XB,"../../lessons/diagramme/uebergabe-bonus-start.visustruct":eO,"../../lessons/diagramme/uebergabe-bonus-unterprogramm-loesung.visustruct":tO,"../../lessons/diagramme/uebergabe-haupt.visustruct":nO,"../../lessons/diagramme/uebergabe-leeren.visustruct":iO,"../../lessons/diagramme/uebergabe-verdopple.visustruct":aO,"../../lessons/diagramme/vb-abstand-anzeigen-loesung.visustruct":sO,"../../lessons/diagramme/vb-abstand-halten-loesung.visustruct":rO,"../../lessons/diagramme/vb-alarmanlage-loesung.visustruct":oO,"../../lessons/diagramme/vb-ampel-loesung.visustruct":lO,"../../lessons/diagramme/vb-ausgang-loesung.visustruct":uO,"../../lessons/diagramme/vb-begruessung-loesung.visustruct":mO,"../../lessons/diagramme/vb-binaer-zaehlen-loesung.visustruct":cO,"../../lessons/diagramme/vb-bis-rot-loesung.visustruct":dO,"../../lessons/diagramme/vb-bis-wand-loesung.visustruct":hO,"../../lessons/diagramme/vb-bis-ziel-loesung.visustruct":gO,"../../lessons/diagramme/vb-buchstaben-loesung.visustruct":pO,"../../lessons/diagramme/vb-do-while-loesung.visustruct":fO,"../../lessons/diagramme/vb-drei-lichter-loesung.visustruct":bO,"../../lessons/diagramme/vb-dreieck-loesung.visustruct":xO,"../../lessons/diagramme/vb-einparken-loesung.visustruct":vO,"../../lessons/diagramme/vb-erster-plan-loesung.visustruct":yO,"../../lessons/diagramme/vb-farben-loesung.visustruct":wO,"../../lessons/diagramme/vb-farbweiche-loesung.visustruct":zO,"../../lessons/diagramme/vb-fehler-04-sensoren-start.visustruct":IO,"../../lessons/diagramme/vb-fehler-05-bis-zur-wand-start.visustruct":kO,"../../lessons/diagramme/vb-fehler-05-erst-fahren-dann-pruefen-start.visustruct":SO,"../../lessons/diagramme/vb-fehler-06-abstand-start.visustruct":TO,"../../lessons/diagramme/vb-fehler-07-linie-start.visustruct":_O,"../../lessons/diagramme/vb-fehler-07-und-oder-start.visustruct":jO,"../../lessons/diagramme/vb-fehler-08-farben-start.visustruct":CO,"../../lessons/diagramme/vb-fehler-09-fallauswahl-mbot2-start.visustruct":AO,"../../lessons/diagramme/vb-fehler-10-tasten-joystick-start.visustruct":PO,"../../lessons/diagramme/vb-fehler-10-unterbrechen-mit-break-start.visustruct":DO,"../../lessons/diagramme/vb-fehler-11-licht-start.visustruct":BO,"../../lessons/diagramme/vb-fehler-12-lautstaerke-start.visustruct":OO,"../../lessons/diagramme/vb-fehler-13-neigung-start.visustruct":MO,"../../lessons/diagramme/vb-fehler-14-leds-start.visustruct":ZO,"../../lessons/diagramme/vb-fehler-15-einzelne-leds-start.visustruct":LO,"../../lessons/diagramme/vb-fehler-16-lautsprecher-start.visustruct":WO,"../../lessons/diagramme/vb-fehler-17-arrays-melodie-start.visustruct":EO,"../../lessons/diagramme/vb-fehler-18-bildschirm-start.visustruct":NO,"../../lessons/diagramme/vb-fehler-19-zeichenketten-start.visustruct":FO,"../../lessons/diagramme/vb-fehler-20-motoren-start.visustruct":RO,"../../lessons/diagramme/vb-fehler-21-stoppuhr-akku-start.visustruct":JO,"../../lessons/diagramme/vb-fehler-22-eigene-methoden-start.visustruct":GO,"../../lessons/diagramme/vb-gas-bis-wand-loesung.visustruct":HO,"../../lessons/diagramme/vb-gerade-loesung.visustruct":VO,"../../lessons/diagramme/vb-hindernis-loesung.visustruct":qO,"../../lessons/diagramme/vb-java-akku-loesung.visustruct":QO,"../../lessons/diagramme/vb-java-blau-gruen-loesung.visustruct":UO,"../../lessons/diagramme/vb-java-blinken-loesung.visustruct":YO,"../../lessons/diagramme/vb-java-countdown-loesung.visustruct":$O,"../../lessons/diagramme/vb-java-hoeher-loesung.visustruct":KO,"../../lessons/diagramme/vb-java-joystick-loesung.visustruct":XO,"../../lessons/diagramme/vb-java-laermampel-loesung.visustruct":eM,"../../lessons/diagramme/vb-java-lauflicht-loesung.visustruct":tM,"../../lessons/diagramme/vb-java-linienfolger-loesung.visustruct":nM,"../../lessons/diagramme/vb-java-nachtlicht-ton-loesung.visustruct":iM,"../../lessons/diagramme/vb-java-rand-loesung.visustruct":aM,"../../lessons/diagramme/vb-java-rechteck-loesung.visustruct":sM,"../../lessons/diagramme/vb-java-rechteck-umdrehungen-loesung.visustruct":rM,"../../lessons/diagramme/vb-java-schritte-zaehlen-loesung.visustruct":oM,"../../lessons/diagramme/vb-java-sicher-fahren-loesung.visustruct":lM,"../../lessons/diagramme/vb-java-taste-stopp-loesung.visustruct":uM,"../../lessons/diagramme/vb-java-textlaenge-loesung.visustruct":mM,"../../lessons/diagramme/vb-java-wand-piep-loesung.visustruct":cM,"../../lessons/diagramme/vb-java-wasserwaage-loesung.visustruct":dM,"../../lessons/diagramme/vb-klatschen-loesung.visustruct":hM,"../../lessons/diagramme/vb-knight-rider-loesung.visustruct":gM,"../../lessons/diagramme/vb-l00-bausteine-loesung.visustruct":pM,"../../lessons/diagramme/vb-l00-sequenz-loesung.visustruct":fM,"../../lessons/diagramme/vb-l03-wachsend-loesung.visustruct":bM,"../../lessons/diagramme/vb-labyrinth-loesung.visustruct":xM,"../../lessons/diagramme/vb-laufschrift-loesung.visustruct":vM,"../../lessons/diagramme/vb-linienfolger-stopp-loesung.visustruct":yM,"../../lessons/diagramme/vb-linienmuster-loesung.visustruct":wM,"../../lessons/diagramme/vb-melodie-loesung.visustruct":zM,"../../lessons/diagramme/vb-messreihe-loesung.visustruct":IM,"../../lessons/diagramme/vb-morsen-loesung.visustruct":kM,"../../lessons/diagramme/vb-nachtlicht-loesung.visustruct":SM,"../../lessons/diagramme/vb-nachtwaechter-loesung.visustruct":TM,"../../lessons/diagramme/vb-notbremse-loesung.visustruct":_M,"../../lessons/diagramme/vb-oder-loesung.visustruct":jM,"../../lessons/diagramme/vb-quadrat-loesung.visustruct":CM,"../../lessons/diagramme/vb-quadrat-methode-loesung.visustruct":AM,"../../lessons/diagramme/vb-quadrat-schleife-loesung.visustruct":PM,"../../lessons/diagramme/vb-quadrat-unterprogramm-loesung.visustruct":DM,"../../lessons/diagramme/vb-quadrat-verschachtelt-loesung.visustruct":BM,"../../lessons/diagramme/vb-rand-loesung.visustruct":OM,"../../lessons/diagramme/vb-schraeglage-loesung.visustruct":MM,"../../lessons/diagramme/vb-slalom-loesung.visustruct":ZM,"../../lessons/diagramme/vb-spirale-falsch-loesung.visustruct":LM,"../../lessons/diagramme/vb-spirale-falsch-start.visustruct":WM,"../../lessons/diagramme/vb-spirale-loesung.visustruct":EM,"../../lessons/diagramme/vb-start-a-loesung.visustruct":NM,"../../lessons/diagramme/vb-startsignal-loesung.visustruct":FM,"../../lessons/diagramme/vb-strecke-anzeigen-loesung.visustruct":RM,"../../lessons/diagramme/vb-tonleiter-loesung.visustruct":JM,"../../lessons/diagramme/vb-treppe-loesung.visustruct":GM,"../../lessons/diagramme/vb-tunnel-loesung.visustruct":HM,"../../lessons/diagramme/vb-ueberladung-umdrehung-loesung.visustruct":VM,"../../lessons/diagramme/vb-und-loesung.visustruct":qM,"../../lessons/diagramme/vb-variable-seite-loesung.visustruct":QM,"../../lessons/diagramme/vb-vier-quadrate-loesung.visustruct":UM,"../../lessons/diagramme/vb-wald-loesung.visustruct":YM,"../../lessons/diagramme/vb-wand-vorn-loesung.visustruct":$M,"../../lessons/diagramme/vb-zentimeter-loesung.visustruct":KM,"../../lessons/diagramme/vb-zentimeter-unterprogramm-loesung.visustruct":XM,"../../lessons/diagramme/vb-zwei-sekunden-loesung.visustruct":eZ,"../../lessons/diagramme/zk-initialen-loesung.visustruct":tZ,"../../lessons/diagramme/zk-mehr.visustruct":nZ,"../../lessons/diagramme/zk-rueckwaerts-loesung.visustruct":iZ,"../../lessons/diagramme/zk-split.visustruct":aZ,"../../lessons/diagramme/zk-woerter-loesung.visustruct":sZ,"../../lessons/diagramme/zk-zaehlen.visustruct":rZ,"../../lessons/diagramme/zk-zeichen.visustruct":oZ}),TE=Object.assign({"../../lessons/welten/ausgang-1.txt":lZ,"../../lessons/welten/ausgang-2.txt":uZ,"../../lessons/welten/ecke.txt":mZ,"../../lessons/welten/farbe-1.txt":cZ,"../../lessons/welten/farbe-2.txt":dZ,"../../lessons/welten/farbe-3.txt":hZ,"../../lessons/welten/farbe-4.txt":gZ,"../../lessons/welten/hindernis-1.txt":pZ,"../../lessons/welten/hindernis-2.txt":fZ,"../../lessons/welten/labyrinth-1.txt":bZ,"../../lessons/welten/labyrinth-2.txt":xZ,"../../lessons/welten/linie-1.txt":vZ,"../../lessons/welten/linie-2.txt":yZ,"../../lessons/welten/linie-rot-1.txt":wZ,"../../lessons/welten/linie-rot-2.txt":zZ,"../../lessons/welten/parken-1.txt":IZ,"../../lessons/welten/parken-2.txt":kZ,"../../lessons/welten/rand-1.txt":SZ,"../../lessons/welten/rand-2.txt":TZ,"../../lessons/welten/slalom.txt":_Z,"../../lessons/welten/tunnel-1.txt":jZ,"../../lessons/welten/tunnel-2.txt":CZ,"../../lessons/welten/wald-1.txt":AZ,"../../lessons/welten/wald-2.txt":PZ,"../../lessons/welten/wand-frei.txt":DZ,"../../lessons/welten/wand-kurz.txt":BZ,"../../lessons/welten/wand-lang.txt":OZ,"../../lessons/welten/wand-mittel.txt":MZ,"../../lessons/welten/wand-nah.txt":ZZ,"../../lessons/welten/zeit-1.txt":LZ,"../../lessons/welten/ziel-kurz.txt":WZ,"../../lessons/welten/ziel-lang.txt":EZ}),_E=Object.assign({"../../lessons/bilder/ada-lovelace.jpg":NZ,"../../lessons/bilder/aufgabe-mehrwertsteuer.svg":FZ,"../../lessons/bilder/ben-shneiderman.jpg":RZ,"../../lessons/bilder/caesar-ascii.svg":JZ,"../../lessons/bilder/caesar-scheibe.svg":GZ,"../../lessons/bilder/caesar-verschiebung.svg":HZ,"../../lessons/bilder/en/aufgabe-mehrwertsteuer.svg":VZ,"../../lessons/bilder/en/kino-saal.svg":qZ,"../../lessons/bilder/en/kino-schleifen.svg":QZ,"../../lessons/bilder/en/l01-pap.svg":UZ,"../../lessons/bilder/en/l02-einfuegen.svg":YZ,"../../lessons/bilder/en/l03-lochkarte-beschriftet.svg":$Z,"../../lessons/bilder/en/l03-lochkarte.svg":KZ,"../../lessons/bilder/en/l04-camelcase.svg":XZ,"../../lessons/bilder/en/l04-variable.svg":eL,"../../lessons/bilder/en/l04-zuweisung.svg":tL,"../../lessons/bilder/en/l05-tauschen.svg":nL,"../../lessons/bilder/en/l08-zahlenstrahl.svg":iL,"../../lessons/bilder/en/l10-kopfgesteuert.svg":aL,"../../lessons/bilder/en/l11-vergleich.svg":sL,"../../lessons/bilder/en/l12-for-ablauf.svg":rL,"../../lessons/bilder/en/l12-while-zu-for.svg":oL,"../../lessons/bilder/en/l13-verschachtelt-tabelle.svg":lL,"../../lessons/bilder/en/l14-array.svg":uL,"../../lessons/bilder/en/l20-cpp.svg":mL,"../../lessons/bilder/en/l20-jvm.svg":cL,"../../lessons/bilder/en/mvc-klick.svg":dL,"../../lessons/bilder/en/ss-binaere-suche.svg":hL,"../../lessons/bilder/en/ss-bubblesort.svg":gL,"../../lessons/bilder/en/ss-lineare-suche.svg":pL,"../../lessons/bilder/en/ss-vergleiche.svg":fL,"../../lessons/bilder/en/uebergabe.svg":bL,"../../lessons/bilder/en/zk-zeichen.svg":xL,"../../lessons/bilder/grace-hopper.jpg":vL,"../../lessons/bilder/hedy-lamarr.jpg":yL,"../../lessons/bilder/ike-nassi.jpg":wL,"../../lessons/bilder/katherine-johnson.jpg":zL,"../../lessons/bilder/kino-saal.svg":IL,"../../lessons/bilder/kino-schleifen.svg":kL,"../../lessons/bilder/l01-pap.svg":SL,"../../lessons/bilder/l02-einfuegen.svg":TL,"../../lessons/bilder/l03-lochkarte-beschriftet.svg":_L,"../../lessons/bilder/l03-lochkarte.svg":jL,"../../lessons/bilder/l03-zuse-lochstreifen.svg":CL,"../../lessons/bilder/l04-camelcase.svg":AL,"../../lessons/bilder/l04-variable.svg":PL,"../../lessons/bilder/l04-zuweisung.svg":DL,"../../lessons/bilder/l05-tauschen.svg":BL,"../../lessons/bilder/l07-schreibtischtest-de.svg":OL,"../../lessons/bilder/l07-schreibtischtest-en.svg":ML,"../../lessons/bilder/l07-schreibtischtest-pt.svg":ZL,"../../lessons/bilder/l08-zahlenstrahl.svg":LL,"../../lessons/bilder/l09-wahrheitstabelle.svg":WL,"../../lessons/bilder/l10-kopfgesteuert.svg":EL,"../../lessons/bilder/l11-vergleich.svg":NL,"../../lessons/bilder/l12-for-ablauf.svg":FL,"../../lessons/bilder/l12-while-zu-for.svg":RL,"../../lessons/bilder/l13-verschachtelt-tabelle.svg":JL,"../../lessons/bilder/l14-array.svg":GL,"../../lessons/bilder/l20-cpp.svg":HL,"../../lessons/bilder/l20-jvm.svg":VL,"../../lessons/bilder/margaret-hamilton.jpg":qL,"../../lessons/bilder/mvc-klick.svg":QL,"../../lessons/bilder/pt/aufgabe-mehrwertsteuer.svg":UL,"../../lessons/bilder/pt/kino-saal.svg":YL,"../../lessons/bilder/pt/kino-schleifen.svg":$L,"../../lessons/bilder/pt/l01-pap.svg":KL,"../../lessons/bilder/pt/l02-einfuegen.svg":XL,"../../lessons/bilder/pt/l03-lochkarte-beschriftet.svg":eW,"../../lessons/bilder/pt/l03-lochkarte.svg":tW,"../../lessons/bilder/pt/l04-camelcase.svg":nW,"../../lessons/bilder/pt/l04-variable.svg":iW,"../../lessons/bilder/pt/l04-zuweisung.svg":aW,"../../lessons/bilder/pt/l05-tauschen.svg":sW,"../../lessons/bilder/pt/l08-zahlenstrahl.svg":rW,"../../lessons/bilder/pt/l10-kopfgesteuert.svg":oW,"../../lessons/bilder/pt/l11-vergleich.svg":lW,"../../lessons/bilder/pt/l12-for-ablauf.svg":uW,"../../lessons/bilder/pt/l12-while-zu-for.svg":mW,"../../lessons/bilder/pt/l13-verschachtelt-tabelle.svg":cW,"../../lessons/bilder/pt/l14-array.svg":dW,"../../lessons/bilder/pt/l20-cpp.svg":hW,"../../lessons/bilder/pt/l20-jvm.svg":gW,"../../lessons/bilder/pt/mvc-klick.svg":pW,"../../lessons/bilder/pt/schiffe-versenken.svg":fW,"../../lessons/bilder/pt/ss-binaere-suche.svg":bW,"../../lessons/bilder/pt/ss-bubblesort.svg":xW,"../../lessons/bilder/pt/ss-lineare-suche.svg":vW,"../../lessons/bilder/pt/ss-vergleiche.svg":yW,"../../lessons/bilder/pt/uebergabe.svg":wW,"../../lessons/bilder/pt/zk-zeichen.svg":zW,"../../lessons/bilder/schiffe-versenken.svg":IW,"../../lessons/bilder/ss-binaere-suche.svg":kW,"../../lessons/bilder/ss-bubblesort.svg":SW,"../../lessons/bilder/ss-lineare-suche.svg":TW,"../../lessons/bilder/ss-vergleiche.svg":_W,"../../lessons/bilder/uebergabe.svg":jW,"../../lessons/bilder/zk-zeichen.svg":CW}),Zg=i=>i.replace(/^.*\//,"");function ti(i,e,t){const n=s=>new Map(Object.entries(i).filter(([r])=>{var o;return((o=e.exec(r))==null?void 0:o[1])===s}).map(([r,o])=>[Zg(r),o]));return[...new Map([...n("en"),...t==="en"?[]:n(t)])]}function bm(i){return i==="de"?"de":i==="pt-PT"?"pt":"en"}let P1="en",zt=[],Pn=[],Xa="",es=[],Ds="off";function xm(i){i!==Ds&&(Ds=i,zt=[],Bs(P1))}function Bs(i){var s,r,o;if(sb(i),i===P1&&zt.length>0)return;P1=i;const e=ti(zE,/\/lessons\/([^/]+)\/[^/]+\.md$/,i),t=(l,u)=>l.filter(([m])=>/^\d+/.test(m)).map(([m,c])=>yE(ym(c,u),`${i}/${m}`)).sort((m,c)=>m.number-c.number),n=(l,u,m)=>l.map(([c,d])=>{const h=wE(ym(d,m),`${i}/${u}${c}`);return m&&h.after!==void 0?{...h,after:m.get(h.after)??h.after}:h}),a=ti(IE,/\/lessons\/([^/]+)\/aufgaben\/[^/]+\.md$/,i);if(Ds==="on"){const l=ti(fm,/\/lessons\/([^/]+)\/visubot\/[^/]+\.md$/,i),u=vm(l);zt=t(l,u.renumber).map(c=>({...c,number:u.number.get(c.id),robot:!0})).sort((c,d)=>c.number-d.number);const m=ti(kE,/\/lessons\/([^/]+)\/visubot\/aufgaben\/[^/]+\.md$/,i);Pn=n(m,"visubot/aufgaben/",u.renumber).map(c=>({...c,robot:!0}))}else{const l=e.filter(([m])=>/^\d+/.test(m)),u=vm(l);zt=t(l,u.renumber).map(m=>({...m,number:u.number.get(m.id)})).sort((m,c)=>m.number-c.number),Pn=n(a,"aufgaben/",u.renumber)}Pn.sort((l,u)=>(l.after??0)-(u.after??0)||l.level-u.level||l.title.localeCompare(u.title,i));for(const l of[...zt.flatMap(u=>u.steps.flatMap(m=>m.blocks)),...Pn.flatMap(u=>u.blocks)])l.kind==="textFile"&&pb(l.name,l.content);if(Xa=((s=e.find(([l])=>l==="nachschlagen.md"))==null?void 0:s[1])??"",Ds!=="off"){const l=(r=ti(fm,/\/lessons\/([^/]+)\/visubot\/[^/]+\.md$/,i).find(([u])=>u==="nachschlagen.md"))==null?void 0:r[1];l&&(Xa=`${Xa.trimEnd()} +`)){const h=/^##\s+(.*)$/.exec(d);h?(u(),l={title:h[1].trim(),lines:[]}):l?l.lines.push(d):o.push(d)}if(u(),r.length===0)throw new ie(`${e}: Keine Schritte (## Überschrift) gefunden.`);IN(r,e);const m=t.get("titel");if(!m)throw new ie(`${e}: „titel:“ fehlt.`);return{id:a,number:s,title:m,section:t.get("bereich")??"",summary:t.get("kurz")??o.join(" ").trim(),steps:r}}function SN(i,e){const{meta:t,body:n}=Bg(i,e),a=t.get("titel");if(!a)throw new ie(`${e}: „titel:“ fehlt.`);const s=t.get("nach");return{id:e.replace(/^.*\//,"").replace(/\.md$/,""),title:a,after:s?Number(s):void 0,level:Number(t.get("stufe")??"1")||1,blocks:Mg(n,e)}}function pm(i,e){const t=i.split(/\s*,\s*/).map(n=>n.trim()).filter(Boolean);for(const n of t)if(!db(n))throw new ie(`${e}: Unbekanntes Teil „${n}“. Bekannt: ${Eh.join(", ")}.`);return t}const TN=Object.assign({"../../lessons/de/01-was-ist-ein-struktogramm.md":i4,"../../lessons/de/01-weitere-darstellungen.md":a4,"../../lessons/de/02-der-editor.md":s4,"../../lessons/de/03-speichern-oeffnen-exportieren.md":r4,"../../lessons/de/04-variablen-und-datentypen.md":o4,"../../lessons/de/05-sequenz.md":l4,"../../lessons/de/06-eingabe-und-ausgabe.md":u4,"../../lessons/de/07-simulation-und-schreibtischtest.md":m4,"../../lessons/de/08-verzweigung.md":c4,"../../lessons/de/09-bedingungen-verknuepfen.md":d4,"../../lessons/de/10-fallauswahl.md":h4,"../../lessons/de/11-while-schleife.md":g4,"../../lessons/de/12-do-while-schleife.md":p4,"../../lessons/de/13-for-schleife.md":f4,"../../lessons/de/14-verschachteln.md":b4,"../../lessons/de/15-arrays.md":x4,"../../lessons/de/16-zweidimensionale-arrays.md":v4,"../../lessons/de/17-zeichenketten.md":y4,"../../lessons/de/18-aufruf-und-aussprung.md":w4,"../../lessons/de/19-suchen-und-sortieren.md":z4,"../../lessons/de/20-java.md":I4,"../../lessons/de/21-python-und-javascript.md":k4,"../../lessons/de/22-try-und-catch.md":S4,"../../lessons/de/23-text-einlesen-und-speichern.md":T4,"../../lessons/de/24-zeile-fuer-zeile.md":_4,"../../lessons/de/25-tabellen-als-csv.md":j4,"../../lessons/de/26-json.md":A4,"../../lessons/de/27-formate-im-vergleich.md":C4,"../../lessons/de/28-erstes-fenster.md":D4,"../../lessons/de/29-knopf-im-fenster.md":P4,"../../lessons/de/30-der-knopf-reagiert.md":B4,"../../lessons/de/31-zahl-verdoppeln.md":O4,"../../lessons/de/32-klickzaehler.md":M4,"../../lessons/de/33-ampel.md":Z4,"../../lessons/de/34-notenrechner.md":L4,"../../lessons/de/35-taschenrechner.md":W4,"../../lessons/de/36-zahlenraten.md":E4,"../../lessons/de/37-viele-knoepfe-ein-zuhoerer.md":N4,"../../lessons/de/38-innere-klassen.md":F4,"../../lessons/de/39-zwei-reiter.md":R4,"../../lessons/de/40-model-view-controller.md":J4,"../../lessons/de/begriffe.md":G4,"../../lessons/de/nachschlagen.md":H4,"../../lessons/en/01-was-ist-ein-struktogramm.md":V4,"../../lessons/en/01-weitere-darstellungen.md":q4,"../../lessons/en/02-der-editor.md":Q4,"../../lessons/en/03-speichern-oeffnen-exportieren.md":U4,"../../lessons/en/04-variablen-und-datentypen.md":Y4,"../../lessons/en/05-sequenz.md":$4,"../../lessons/en/06-eingabe-und-ausgabe.md":K4,"../../lessons/en/07-simulation-und-schreibtischtest.md":X4,"../../lessons/en/08-verzweigung.md":ev,"../../lessons/en/09-bedingungen-verknuepfen.md":tv,"../../lessons/en/10-fallauswahl.md":nv,"../../lessons/en/11-while-schleife.md":iv,"../../lessons/en/12-do-while-schleife.md":av,"../../lessons/en/13-for-schleife.md":sv,"../../lessons/en/14-verschachteln.md":rv,"../../lessons/en/15-arrays.md":ov,"../../lessons/en/16-zweidimensionale-arrays.md":lv,"../../lessons/en/17-zeichenketten.md":uv,"../../lessons/en/18-aufruf-und-aussprung.md":mv,"../../lessons/en/19-suchen-und-sortieren.md":cv,"../../lessons/en/20-java.md":dv,"../../lessons/en/21-python-und-javascript.md":hv,"../../lessons/en/22-try-und-catch.md":gv,"../../lessons/en/23-text-einlesen-und-speichern.md":pv,"../../lessons/en/24-zeile-fuer-zeile.md":fv,"../../lessons/en/25-tabellen-als-csv.md":bv,"../../lessons/en/26-json.md":xv,"../../lessons/en/27-formate-im-vergleich.md":vv,"../../lessons/en/28-erstes-fenster.md":yv,"../../lessons/en/29-knopf-im-fenster.md":wv,"../../lessons/en/30-der-knopf-reagiert.md":zv,"../../lessons/en/31-zahl-verdoppeln.md":Iv,"../../lessons/en/32-klickzaehler.md":kv,"../../lessons/en/33-ampel.md":Sv,"../../lessons/en/34-notenrechner.md":Tv,"../../lessons/en/35-taschenrechner.md":_v,"../../lessons/en/36-zahlenraten.md":jv,"../../lessons/en/37-viele-knoepfe-ein-zuhoerer.md":Av,"../../lessons/en/38-innere-klassen.md":Cv,"../../lessons/en/39-zwei-reiter.md":Dv,"../../lessons/en/40-model-view-controller.md":Pv,"../../lessons/en/begriffe.md":Bv,"../../lessons/en/nachschlagen.md":Ov,"../../lessons/pt/01-was-ist-ein-struktogramm.md":Mv,"../../lessons/pt/01-weitere-darstellungen.md":Zv,"../../lessons/pt/02-der-editor.md":Lv,"../../lessons/pt/03-speichern-oeffnen-exportieren.md":Wv,"../../lessons/pt/04-variablen-und-datentypen.md":Ev,"../../lessons/pt/05-sequenz.md":Nv,"../../lessons/pt/06-eingabe-und-ausgabe.md":Fv,"../../lessons/pt/07-simulation-und-schreibtischtest.md":Rv,"../../lessons/pt/08-verzweigung.md":Jv,"../../lessons/pt/09-bedingungen-verknuepfen.md":Gv,"../../lessons/pt/10-fallauswahl.md":Hv,"../../lessons/pt/11-while-schleife.md":Vv,"../../lessons/pt/12-do-while-schleife.md":qv,"../../lessons/pt/13-for-schleife.md":Qv,"../../lessons/pt/14-verschachteln.md":Uv,"../../lessons/pt/15-arrays.md":Yv,"../../lessons/pt/16-zweidimensionale-arrays.md":$v,"../../lessons/pt/17-zeichenketten.md":Kv,"../../lessons/pt/18-aufruf-und-aussprung.md":Xv,"../../lessons/pt/19-suchen-und-sortieren.md":ey,"../../lessons/pt/20-java.md":ty,"../../lessons/pt/21-python-und-javascript.md":ny,"../../lessons/pt/22-try-und-catch.md":iy,"../../lessons/pt/23-text-einlesen-und-speichern.md":ay,"../../lessons/pt/24-zeile-fuer-zeile.md":sy,"../../lessons/pt/25-tabellen-als-csv.md":ry,"../../lessons/pt/26-json.md":oy,"../../lessons/pt/27-formate-im-vergleich.md":ly,"../../lessons/pt/28-erstes-fenster.md":uy,"../../lessons/pt/29-knopf-im-fenster.md":my,"../../lessons/pt/30-der-knopf-reagiert.md":cy,"../../lessons/pt/31-zahl-verdoppeln.md":dy,"../../lessons/pt/32-klickzaehler.md":hy,"../../lessons/pt/33-ampel.md":gy,"../../lessons/pt/34-notenrechner.md":py,"../../lessons/pt/35-taschenrechner.md":fy,"../../lessons/pt/36-zahlenraten.md":by,"../../lessons/pt/37-viele-knoepfe-ein-zuhoerer.md":xy,"../../lessons/pt/38-innere-klassen.md":vy,"../../lessons/pt/39-zwei-reiter.md":yy,"../../lessons/pt/40-model-view-controller.md":wy,"../../lessons/pt/begriffe.md":zy,"../../lessons/pt/nachschlagen.md":Iy}),_N=Object.assign({"../../lessons/de/aufgaben/alter-unterprogramm.md":ky,"../../lessons/de/aufgaben/ballwurf.md":Sy,"../../lessons/de/aufgaben/bestenliste.md":Ty,"../../lessons/de/aufgaben/binaerzahl.md":_y,"../../lessons/de/aufgaben/caesar.md":jy,"../../lessons/de/aufgaben/collatz.md":Ay,"../../lessons/de/aufgaben/einheitenrechner.md":Cy,"../../lessons/de/aufgaben/fibonacci.md":Dy,"../../lessons/de/aufgaben/gerade-ungerade.md":Py,"../../lessons/de/aufgaben/mehrwertsteuer.md":By,"../../lessons/de/aufgaben/notendurchschnitt.md":Oy,"../../lessons/de/aufgaben/pin-pruefen.md":My,"../../lessons/de/aufgaben/schiffe-versenken.md":Zy,"../../lessons/de/aufgaben/speisekarte.md":Ly,"../../lessons/de/aufgaben/summe-bilden.md":Wy,"../../lessons/de/aufgaben/tafeldienst.md":Ey,"../../lessons/de/aufgaben/taschenrechner.md":Ny,"../../lessons/de/aufgaben/verleih-menue.md":Fy,"../../lessons/de/aufgaben/vokabeltrainer.md":Ry,"../../lessons/de/aufgaben/volljaehrig.md":Jy,"../../lessons/de/aufgaben/wuerfel-mvc.md":Gy,"../../lessons/de/aufgaben/zahl-verdoppeln.md":Hy,"../../lessons/en/aufgaben/alter-unterprogramm.md":Vy,"../../lessons/en/aufgaben/ballwurf.md":qy,"../../lessons/en/aufgaben/bestenliste.md":Qy,"../../lessons/en/aufgaben/binaerzahl.md":Uy,"../../lessons/en/aufgaben/caesar.md":Yy,"../../lessons/en/aufgaben/collatz.md":$y,"../../lessons/en/aufgaben/einheitenrechner.md":Ky,"../../lessons/en/aufgaben/fibonacci.md":Xy,"../../lessons/en/aufgaben/gerade-ungerade.md":ew,"../../lessons/en/aufgaben/mehrwertsteuer.md":tw,"../../lessons/en/aufgaben/notendurchschnitt.md":nw,"../../lessons/en/aufgaben/pin-pruefen.md":iw,"../../lessons/en/aufgaben/schiffe-versenken.md":aw,"../../lessons/en/aufgaben/speisekarte.md":sw,"../../lessons/en/aufgaben/summe-bilden.md":rw,"../../lessons/en/aufgaben/tafeldienst.md":ow,"../../lessons/en/aufgaben/taschenrechner.md":lw,"../../lessons/en/aufgaben/verleih-menue.md":uw,"../../lessons/en/aufgaben/vokabeltrainer.md":mw,"../../lessons/en/aufgaben/volljaehrig.md":cw,"../../lessons/en/aufgaben/wuerfel-mvc.md":dw,"../../lessons/en/aufgaben/zahl-verdoppeln.md":hw,"../../lessons/pt/aufgaben/alter-unterprogramm.md":gw,"../../lessons/pt/aufgaben/ballwurf.md":pw,"../../lessons/pt/aufgaben/bestenliste.md":fw,"../../lessons/pt/aufgaben/binaerzahl.md":bw,"../../lessons/pt/aufgaben/caesar.md":xw,"../../lessons/pt/aufgaben/collatz.md":vw,"../../lessons/pt/aufgaben/einheitenrechner.md":yw,"../../lessons/pt/aufgaben/fibonacci.md":ww,"../../lessons/pt/aufgaben/gerade-ungerade.md":zw,"../../lessons/pt/aufgaben/mehrwertsteuer.md":Iw,"../../lessons/pt/aufgaben/notendurchschnitt.md":kw,"../../lessons/pt/aufgaben/pin-pruefen.md":Sw,"../../lessons/pt/aufgaben/schiffe-versenken.md":Tw,"../../lessons/pt/aufgaben/speisekarte.md":_w,"../../lessons/pt/aufgaben/summe-bilden.md":jw,"../../lessons/pt/aufgaben/tafeldienst.md":Aw,"../../lessons/pt/aufgaben/taschenrechner.md":Cw,"../../lessons/pt/aufgaben/verleih-menue.md":Dw,"../../lessons/pt/aufgaben/vokabeltrainer.md":Pw,"../../lessons/pt/aufgaben/volljaehrig.md":Bw,"../../lessons/pt/aufgaben/wuerfel-mvc.md":Ow,"../../lessons/pt/aufgaben/zahl-verdoppeln.md":Mw}),fm=Object.assign({"../../lessons/de/visubot/00-struktogramm-und-editor.md":Zw,"../../lessons/de/visubot/01-der-mbot2.md":Lw,"../../lessons/de/visubot/02-das-quadrat.md":Ww,"../../lessons/de/visubot/03-variablen-und-ausgabe.md":Ew,"../../lessons/de/visubot/03-zeile-fuer-zeile-testen.md":Nw,"../../lessons/de/visubot/04-sensoren.md":Fw,"../../lessons/de/visubot/05-bis-zur-wand.md":Rw,"../../lessons/de/visubot/05-erst-fahren-dann-pruefen.md":Jw,"../../lessons/de/visubot/05-zaehlen-und-summieren.md":Gw,"../../lessons/de/visubot/06-abstand.md":Hw,"../../lessons/de/visubot/06-konstanten-final.md":Vw,"../../lessons/de/visubot/06-nah-mittel-weit.md":qw,"../../lessons/de/visubot/07-linie.md":Qw,"../../lessons/de/visubot/07-und-oder.md":Uw,"../../lessons/de/visubot/08-farben.md":Yw,"../../lessons/de/visubot/08-groesster-wert.md":$w,"../../lessons/de/visubot/09-fallauswahl-mbot2.md":Kw,"../../lessons/de/visubot/10-tasten-joystick.md":Xw,"../../lessons/de/visubot/10-unterbrechen-mit-break.md":e9,"../../lessons/de/visubot/11-licht.md":t9,"../../lessons/de/visubot/11-merker-boolean.md":n9,"../../lessons/de/visubot/12-lautstaerke.md":i9,"../../lessons/de/visubot/13-neigung.md":a9,"../../lessons/de/visubot/14-leds.md":s9,"../../lessons/de/visubot/15-einzelne-leds.md":r9,"../../lessons/de/visubot/16-lautsprecher.md":o9,"../../lessons/de/visubot/17-arrays-melodie.md":l9,"../../lessons/de/visubot/18-bildschirm.md":u9,"../../lessons/de/visubot/19-zeichenketten.md":m9,"../../lessons/de/visubot/20-motoren.md":c9,"../../lessons/de/visubot/21-stoppuhr-akku.md":d9,"../../lessons/de/visubot/21-zustaende.md":h9,"../../lessons/de/visubot/22-eigene-methoden.md":g9,"../../lessons/de/visubot/nachschlagen.md":p9,"../../lessons/en/visubot/00-struktogramm-und-editor.md":f9,"../../lessons/en/visubot/01-der-mbot2.md":b9,"../../lessons/en/visubot/02-das-quadrat.md":x9,"../../lessons/en/visubot/03-variablen-und-ausgabe.md":v9,"../../lessons/en/visubot/03-zeile-fuer-zeile-testen.md":y9,"../../lessons/en/visubot/04-sensoren.md":w9,"../../lessons/en/visubot/05-bis-zur-wand.md":z9,"../../lessons/en/visubot/05-erst-fahren-dann-pruefen.md":I9,"../../lessons/en/visubot/05-zaehlen-und-summieren.md":k9,"../../lessons/en/visubot/06-abstand.md":S9,"../../lessons/en/visubot/06-konstanten-final.md":T9,"../../lessons/en/visubot/06-nah-mittel-weit.md":_9,"../../lessons/en/visubot/07-linie.md":j9,"../../lessons/en/visubot/07-und-oder.md":A9,"../../lessons/en/visubot/08-farben.md":C9,"../../lessons/en/visubot/08-groesster-wert.md":D9,"../../lessons/en/visubot/09-fallauswahl-mbot2.md":P9,"../../lessons/en/visubot/10-tasten-joystick.md":B9,"../../lessons/en/visubot/10-unterbrechen-mit-break.md":O9,"../../lessons/en/visubot/11-licht.md":M9,"../../lessons/en/visubot/11-merker-boolean.md":Z9,"../../lessons/en/visubot/12-lautstaerke.md":L9,"../../lessons/en/visubot/13-neigung.md":W9,"../../lessons/en/visubot/14-leds.md":E9,"../../lessons/en/visubot/15-einzelne-leds.md":N9,"../../lessons/en/visubot/16-lautsprecher.md":F9,"../../lessons/en/visubot/17-arrays-melodie.md":R9,"../../lessons/en/visubot/18-bildschirm.md":J9,"../../lessons/en/visubot/19-zeichenketten.md":G9,"../../lessons/en/visubot/20-motoren.md":H9,"../../lessons/en/visubot/21-stoppuhr-akku.md":V9,"../../lessons/en/visubot/21-zustaende.md":q9,"../../lessons/en/visubot/22-eigene-methoden.md":Q9,"../../lessons/en/visubot/nachschlagen.md":U9}),jN=Object.assign({"../../lessons/de/visubot/aufgaben/alarmanlage.md":Y9,"../../lessons/de/visubot/aufgaben/ausgang.md":$9,"../../lessons/de/visubot/aufgaben/binaer-zaehlen.md":K9,"../../lessons/de/visubot/aufgaben/dreieck.md":X9,"../../lessons/de/visubot/aufgaben/einparken.md":e5,"../../lessons/de/visubot/aufgaben/hindernis.md":t5,"../../lessons/de/visubot/aufgaben/knight-rider.md":n5,"../../lessons/de/visubot/aufgaben/labyrinth.md":i5,"../../lessons/de/visubot/aufgaben/linienfolger-stopp.md":a5,"../../lessons/de/visubot/aufgaben/morsen.md":s5,"../../lessons/de/visubot/aufgaben/nachtwaechter.md":r5,"../../lessons/de/visubot/aufgaben/slalom.md":o5,"../../lessons/de/visubot/aufgaben/spirale.md":l5,"../../lessons/de/visubot/aufgaben/treppe.md":u5,"../../lessons/de/visubot/aufgaben/tunnel.md":m5,"../../lessons/de/visubot/aufgaben/wald.md":c5,"../../lessons/en/visubot/aufgaben/alarmanlage.md":d5,"../../lessons/en/visubot/aufgaben/ausgang.md":h5,"../../lessons/en/visubot/aufgaben/binaer-zaehlen.md":g5,"../../lessons/en/visubot/aufgaben/dreieck.md":p5,"../../lessons/en/visubot/aufgaben/einparken.md":f5,"../../lessons/en/visubot/aufgaben/hindernis.md":b5,"../../lessons/en/visubot/aufgaben/knight-rider.md":x5,"../../lessons/en/visubot/aufgaben/labyrinth.md":v5,"../../lessons/en/visubot/aufgaben/linienfolger-stopp.md":y5,"../../lessons/en/visubot/aufgaben/morsen.md":w5,"../../lessons/en/visubot/aufgaben/nachtwaechter.md":z5,"../../lessons/en/visubot/aufgaben/slalom.md":I5,"../../lessons/en/visubot/aufgaben/spirale.md":k5,"../../lessons/en/visubot/aufgaben/treppe.md":S5,"../../lessons/en/visubot/aufgaben/tunnel.md":T5,"../../lessons/en/visubot/aufgaben/wald.md":_5}),AN=Object.assign({"../../lessons/diagramme/aufgabe-alter-haupt-loesung.visustruct":j5,"../../lessons/diagramme/aufgabe-alter-unterprogramm-loesung.visustruct":A5,"../../lessons/diagramme/aufgabe-ballwurf-loesung.visustruct":C5,"../../lessons/diagramme/aufgabe-ballwurf-start.visustruct":D5,"../../lessons/diagramme/aufgabe-bestenliste-loesung.visustruct":P5,"../../lessons/diagramme/aufgabe-binaer-loesung.visustruct":B5,"../../lessons/diagramme/aufgabe-caesar-array-loesung.visustruct":O5,"../../lessons/diagramme/aufgabe-caesar-array-start.visustruct":M5,"../../lessons/diagramme/aufgabe-caesar-ascii-loesung.visustruct":Z5,"../../lessons/diagramme/aufgabe-caesar-entschluesseln-loesung.visustruct":L5,"../../lessons/diagramme/aufgabe-collatz-loesung.visustruct":W5,"../../lessons/diagramme/aufgabe-durchschnitt-loesung.visustruct":E5,"../../lessons/diagramme/aufgabe-fibonacci-loesung.visustruct":N5,"../../lessons/diagramme/aufgabe-gerade-loesung.visustruct":F5,"../../lessons/diagramme/aufgabe-mehrwertsteuer-loesung.visustruct":R5,"../../lessons/diagramme/aufgabe-pin-java-loesung.visustruct":J5,"../../lessons/diagramme/aufgabe-pin-loesung.visustruct":G5,"../../lessons/diagramme/aufgabe-rechner-loesung.visustruct":H5,"../../lessons/diagramme/aufgabe-schiffe-loesung.visustruct":V5,"../../lessons/diagramme/aufgabe-schiffe-start.visustruct":q5,"../../lessons/diagramme/aufgabe-speisekarte-loesung.visustruct":Q5,"../../lessons/diagramme/aufgabe-summe-loesung.visustruct":U5,"../../lessons/diagramme/aufgabe-tafeldienst-loesung.visustruct":Y5,"../../lessons/diagramme/aufgabe-verdoppeln-loesung.visustruct":$5,"../../lessons/diagramme/aufgabe-verleih-java-loesung.visustruct":K5,"../../lessons/diagramme/aufgabe-verleih-loesung.visustruct":X5,"../../lessons/diagramme/aufgabe-vokabeln-loesung.visustruct":ez,"../../lessons/diagramme/aufgabe-vokabeln-start.visustruct":tz,"../../lessons/diagramme/aufgabe-volljaehrig-loesung.visustruct":nz,"../../lessons/diagramme/dt-buffered.visustruct":iz,"../../lessons/diagramme/dt-csv.visustruct":az,"../../lessons/diagramme/dt-json.visustruct":sz,"../../lessons/diagramme/dt-lesen.visustruct":rz,"../../lessons/diagramme/en/aufgabe-alter-haupt-loesung.visustruct":oz,"../../lessons/diagramme/en/aufgabe-alter-unterprogramm-loesung.visustruct":lz,"../../lessons/diagramme/en/aufgabe-ballwurf-loesung.visustruct":uz,"../../lessons/diagramme/en/aufgabe-ballwurf-start.visustruct":mz,"../../lessons/diagramme/en/aufgabe-bestenliste-loesung.visustruct":cz,"../../lessons/diagramme/en/aufgabe-binaer-loesung.visustruct":dz,"../../lessons/diagramme/en/aufgabe-caesar-array-loesung.visustruct":hz,"../../lessons/diagramme/en/aufgabe-caesar-array-start.visustruct":gz,"../../lessons/diagramme/en/aufgabe-caesar-ascii-loesung.visustruct":pz,"../../lessons/diagramme/en/aufgabe-caesar-entschluesseln-loesung.visustruct":fz,"../../lessons/diagramme/en/aufgabe-collatz-loesung.visustruct":bz,"../../lessons/diagramme/en/aufgabe-durchschnitt-loesung.visustruct":xz,"../../lessons/diagramme/en/aufgabe-fibonacci-loesung.visustruct":vz,"../../lessons/diagramme/en/aufgabe-gerade-loesung.visustruct":yz,"../../lessons/diagramme/en/aufgabe-mehrwertsteuer-loesung.visustruct":wz,"../../lessons/diagramme/en/aufgabe-pin-java-loesung.visustruct":zz,"../../lessons/diagramme/en/aufgabe-pin-loesung.visustruct":Iz,"../../lessons/diagramme/en/aufgabe-rechner-loesung.visustruct":kz,"../../lessons/diagramme/en/aufgabe-schiffe-loesung.visustruct":Sz,"../../lessons/diagramme/en/aufgabe-schiffe-start.visustruct":Tz,"../../lessons/diagramme/en/aufgabe-speisekarte-loesung.visustruct":_z,"../../lessons/diagramme/en/aufgabe-summe-loesung.visustruct":jz,"../../lessons/diagramme/en/aufgabe-tafeldienst-loesung.visustruct":Az,"../../lessons/diagramme/en/aufgabe-verdoppeln-loesung.visustruct":Cz,"../../lessons/diagramme/en/aufgabe-verleih-java-loesung.visustruct":Dz,"../../lessons/diagramme/en/aufgabe-verleih-loesung.visustruct":Pz,"../../lessons/diagramme/en/aufgabe-vokabeln-loesung.visustruct":Bz,"../../lessons/diagramme/en/aufgabe-vokabeln-start.visustruct":Oz,"../../lessons/diagramme/en/aufgabe-volljaehrig-loesung.visustruct":Mz,"../../lessons/diagramme/en/dt-buffered.visustruct":Zz,"../../lessons/diagramme/en/dt-csv.visustruct":Lz,"../../lessons/diagramme/en/dt-json.visustruct":Wz,"../../lessons/diagramme/en/dt-lesen.visustruct":Ez,"../../lessons/diagramme/en/kino-einmaleins-loesung.visustruct":Nz,"../../lessons/diagramme/en/kino-frei-loesung.visustruct":Fz,"../../lessons/diagramme/en/kino-frei-start.visustruct":Rz,"../../lessons/diagramme/en/kino-karte-loesung.visustruct":Jz,"../../lessons/diagramme/en/kino-karte-start.visustruct":Gz,"../../lessons/diagramme/en/kino-saalplan.visustruct":Hz,"../../lessons/diagramme/en/kino-verkaufen.visustruct":Vz,"../../lessons/diagramme/en/l04-gross-klein-loesung.visustruct":qz,"../../lessons/diagramme/en/l04-gross-klein-start.visustruct":Qz,"../../lessons/diagramme/en/l04-java-fehler-loesung.visustruct":Uz,"../../lessons/diagramme/en/l04-java-fehler-start.visustruct":Yz,"../../lessons/diagramme/en/l04-java-laeuft-nicht-loesung.visustruct":$z,"../../lessons/diagramme/en/l04-java-laeuft-nicht-start.visustruct":Kz,"../../lessons/diagramme/en/l04-java-steckbrief-loesung.visustruct":Xz,"../../lessons/diagramme/en/l04-rechnen.visustruct":e6,"../../lessons/diagramme/en/l04-reihenfolge-loesung.visustruct":t6,"../../lessons/diagramme/en/l04-reihenfolge-start.visustruct":n6,"../../lessons/diagramme/en/l04-tauschen-loesung.visustruct":i6,"../../lessons/diagramme/en/l04-tauschen-start.visustruct":a6,"../../lessons/diagramme/en/l04-tauschen.visustruct":s6,"../../lessons/diagramme/en/l05-datentypen.visustruct":r6,"../../lessons/diagramme/en/l05-division.visustruct":o6,"../../lessons/diagramme/en/l05-einkauf-loesung.visustruct":l6,"../../lessons/diagramme/en/l05-java-fehler-loesung.visustruct":u6,"../../lessons/diagramme/en/l05-java-fehler-start.visustruct":m6,"../../lessons/diagramme/en/l05-java-kino-loesung.visustruct":c6,"../../lessons/diagramme/en/l05-java-laeuft-nicht-loesung.visustruct":d6,"../../lessons/diagramme/en/l05-java-laeuft-nicht-start.visustruct":h6,"../../lessons/diagramme/en/l05-rechteck-loesung.visustruct":g6,"../../lessons/diagramme/en/l05-sekunden-loesung.visustruct":p6,"../../lessons/diagramme/en/l05-sekunden-start.visustruct":f6,"../../lessons/diagramme/en/l05-sequenz.visustruct":b6,"../../lessons/diagramme/en/l06-begruessung-loesung.visustruct":x6,"../../lessons/diagramme/en/l06-eva.visustruct":v6,"../../lessons/diagramme/en/l06-java-fehler-loesung.visustruct":y6,"../../lessons/diagramme/en/l06-java-fehler-start.visustruct":w6,"../../lessons/diagramme/en/l06-java-laeuft-nicht-loesung.visustruct":z6,"../../lessons/diagramme/en/l06-java-laeuft-nicht-start.visustruct":I6,"../../lessons/diagramme/en/l06-java-tage-loesung.visustruct":k6,"../../lessons/diagramme/en/l06-mittelwert-loesung.visustruct":S6,"../../lessons/diagramme/en/l06-rechner-loesung.visustruct":T6,"../../lessons/diagramme/en/l07-alter-pruefen.visustruct":_6,"../../lessons/diagramme/en/l07-betrag-loesung.visustruct":j6,"../../lessons/diagramme/en/l07-gerade-loesung.visustruct":A6,"../../lessons/diagramme/en/l07-java-fehler-loesung.visustruct":C6,"../../lessons/diagramme/en/l07-java-fehler-start.visustruct":D6,"../../lessons/diagramme/en/l07-java-laeuft-nicht-loesung.visustruct":P6,"../../lessons/diagramme/en/l07-java-laeuft-nicht-start.visustruct":B6,"../../lessons/diagramme/en/l07-java-pizza-loesung.visustruct":O6,"../../lessons/diagramme/en/l07-java-pizza-start.visustruct":M6,"../../lessons/diagramme/en/l07-maximum-loesung.visustruct":Z6,"../../lessons/diagramme/en/l07-rabatt.visustruct":L6,"../../lessons/diagramme/en/l08-gueltig-loesung.visustruct":W6,"../../lessons/diagramme/en/l08-java-bestanden-loesung.visustruct":E6,"../../lessons/diagramme/en/l08-java-fehler-loesung.visustruct":N6,"../../lessons/diagramme/en/l08-java-fehler-start.visustruct":F6,"../../lessons/diagramme/en/l08-java-laeuft-nicht-loesung.visustruct":R6,"../../lessons/diagramme/en/l08-java-laeuft-nicht-start.visustruct":J6,"../../lessons/diagramme/en/l08-jugendticket.visustruct":G6,"../../lessons/diagramme/en/l08-note.visustruct":H6,"../../lessons/diagramme/en/l08-schaltjahr-loesung.visustruct":V6,"../../lessons/diagramme/en/l08-wochenende-loesung.visustruct":q6,"../../lessons/diagramme/en/l09-ampel.visustruct":Q6,"../../lessons/diagramme/en/l09-automat.visustruct":U6,"../../lessons/diagramme/en/l09-java-fehler-loesung.visustruct":Y6,"../../lessons/diagramme/en/l09-java-fehler-start.visustruct":$6,"../../lessons/diagramme/en/l09-java-laeuft-nicht-loesung.visustruct":K6,"../../lessons/diagramme/en/l09-java-laeuft-nicht-start.visustruct":X6,"../../lessons/diagramme/en/l09-java-schule-loesung.visustruct":eI,"../../lessons/diagramme/en/l09-note-loesung.visustruct":tI,"../../lessons/diagramme/en/l09-rechner-loesung.visustruct":nI,"../../lessons/diagramme/en/l09-verschachtelt.visustruct":iI,"../../lessons/diagramme/en/l1-grundbausteine.visustruct":aI,"../../lessons/diagramme/en/l1-sequenz.visustruct":sI,"../../lessons/diagramme/en/l1-tee.visustruct":rI,"../../lessons/diagramme/en/l1-verzweigung.visustruct":oI,"../../lessons/diagramme/en/l1-wiederholung.visustruct":lI,"../../lessons/diagramme/en/l10-bis-n-loesung.visustruct":uI,"../../lessons/diagramme/en/l10-countdown.visustruct":mI,"../../lessons/diagramme/en/l10-endlos.visustruct":cI,"../../lessons/diagramme/en/l10-fakultaet.visustruct":dI,"../../lessons/diagramme/en/l10-java-fehler-loesung.visustruct":hI,"../../lessons/diagramme/en/l10-java-fehler-start.visustruct":gI,"../../lessons/diagramme/en/l10-java-laeuft-nicht-loesung.visustruct":pI,"../../lessons/diagramme/en/l10-java-laeuft-nicht-start.visustruct":fI,"../../lessons/diagramme/en/l10-java-wuerfel-loesung.visustruct":bI,"../../lessons/diagramme/en/l10-verdoppeln-loesung.visustruct":xI,"../../lessons/diagramme/en/l11-eingabe-pruefen.visustruct":vI,"../../lessons/diagramme/en/l11-einmal.visustruct":yI,"../../lessons/diagramme/en/l11-java-fehler-loesung.visustruct":wI,"../../lessons/diagramme/en/l11-java-fehler-start.visustruct":zI,"../../lessons/diagramme/en/l11-java-gerade-loesung.visustruct":II,"../../lessons/diagramme/en/l11-java-laeuft-nicht-loesung.visustruct":kI,"../../lessons/diagramme/en/l11-java-laeuft-nicht-start.visustruct":SI,"../../lessons/diagramme/en/l11-note-loesung.visustruct":TI,"../../lessons/diagramme/en/l11-summe-loesung.visustruct":_I,"../../lessons/diagramme/en/l12-countdown-loesung.visustruct":jI,"../../lessons/diagramme/en/l12-einmaleins-loesung.visustruct":AI,"../../lessons/diagramme/en/l12-eins-bis-fuenf.visustruct":CI,"../../lessons/diagramme/en/l12-java-fehler-loesung.visustruct":DI,"../../lessons/diagramme/en/l12-java-fehler-start.visustruct":PI,"../../lessons/diagramme/en/l12-java-laeuft-nicht-loesung.visustruct":BI,"../../lessons/diagramme/en/l12-java-laeuft-nicht-start.visustruct":OI,"../../lessons/diagramme/en/l12-java-verdoppeln-loesung.visustruct":MI,"../../lessons/diagramme/en/l12-summe.visustruct":ZI,"../../lessons/diagramme/en/l13-dreieck.visustruct":LI,"../../lessons/diagramme/en/l13-gerade-eingaben-loesung.visustruct":WI,"../../lessons/diagramme/en/l13-gerade-zaehlen.visustruct":EI,"../../lessons/diagramme/en/l13-java-fehler-loesung.visustruct":NI,"../../lessons/diagramme/en/l13-java-fehler-start.visustruct":FI,"../../lessons/diagramme/en/l13-java-laeuft-nicht-loesung.visustruct":RI,"../../lessons/diagramme/en/l13-java-laeuft-nicht-start.visustruct":JI,"../../lessons/diagramme/en/l13-java-quadrate-loesung.visustruct":GI,"../../lessons/diagramme/en/l13-rechteck-loesung.visustruct":HI,"../../lessons/diagramme/en/l14-array-durchlaufen.visustruct":VI,"../../lessons/diagramme/en/l14-erster-letzter-loesung.visustruct":qI,"../../lessons/diagramme/en/l14-java-fehler-loesung.visustruct":QI,"../../lessons/diagramme/en/l14-java-fehler-start.visustruct":UI,"../../lessons/diagramme/en/l14-java-laeuft-nicht-loesung.visustruct":YI,"../../lessons/diagramme/en/l14-java-laeuft-nicht-start.visustruct":$I,"../../lessons/diagramme/en/l14-java-treppe-loesung.visustruct":KI,"../../lessons/diagramme/en/l14-namen-eingeben.visustruct":XI,"../../lessons/diagramme/en/l14-rueckwaerts-loesung.visustruct":ek,"../../lessons/diagramme/en/l14-summe-max-loesung.visustruct":tk,"../../lessons/diagramme/en/l14-summe-maximum.visustruct":nk,"../../lessons/diagramme/en/l15-bis-null-loesung.visustruct":ik,"../../lessons/diagramme/en/l15-endlos-aussprung.visustruct":ak,"../../lessons/diagramme/en/l15-flaeche-loesung.visustruct":sk,"../../lessons/diagramme/en/l15-flaeche-unterprogramm-loesung.visustruct":rk,"../../lessons/diagramme/en/l15-hauptprogramm.visustruct":ok,"../../lessons/diagramme/en/l15-java-fehler-loesung.visustruct":lk,"../../lessons/diagramme/en/l15-java-fehler-start.visustruct":uk,"../../lessons/diagramme/en/l15-java-laeuft-nicht-loesung.visustruct":mk,"../../lessons/diagramme/en/l15-java-laeuft-nicht-start.visustruct":ck,"../../lessons/diagramme/en/l15-java-noten-loesung.visustruct":dk,"../../lessons/diagramme/en/l15-quadrat-haupt.visustruct":hk,"../../lessons/diagramme/en/l15-quadrat.visustruct":gk,"../../lessons/diagramme/en/l15-titel-loesung.visustruct":pk,"../../lessons/diagramme/en/l15-unterprogramm.visustruct":fk,"../../lessons/diagramme/en/l15-zeige-summe-haupt.visustruct":bk,"../../lessons/diagramme/en/l15-zeige-summe.visustruct":xk,"../../lessons/diagramme/en/l16-countdown-loesung.visustruct":vk,"../../lessons/diagramme/en/l16-countdown-start.visustruct":yk,"../../lessons/diagramme/en/l16-java-fehler-loesung.visustruct":wk,"../../lessons/diagramme/en/l16-java-fehler-start.visustruct":zk,"../../lessons/diagramme/en/l16-java-laeuft-nicht-loesung.visustruct":Ik,"../../lessons/diagramme/en/l16-java-laeuft-nicht-start.visustruct":kk,"../../lessons/diagramme/en/l16-java-punkte-loesung.visustruct":Sk,"../../lessons/diagramme/en/l16-schreibtisch.visustruct":Tk,"../../lessons/diagramme/en/l16-summe-loesung.visustruct":_k,"../../lessons/diagramme/en/l16-summe-start.visustruct":jk,"../../lessons/diagramme/en/l17-beispiel.visustruct":Ak,"../../lessons/diagramme/en/l17-fakultaet-loesung.visustruct":Ck,"../../lessons/diagramme/en/l17-java-brief-loesung.visustruct":Dk,"../../lessons/diagramme/en/l17-java-brief-start.visustruct":Pk,"../../lessons/diagramme/en/l17-java-fehler-loesung.visustruct":Bk,"../../lessons/diagramme/en/l17-java-fehler-start.visustruct":Ok,"../../lessons/diagramme/en/l17-java-laeuft-nicht-loesung.visustruct":Mk,"../../lessons/diagramme/en/l17-java-laeuft-nicht-start.visustruct":Zk,"../../lessons/diagramme/en/l17-java-passwort-loesung.visustruct":Lk,"../../lessons/diagramme/en/l17-ticket-loesung.visustruct":Wk,"../../lessons/diagramme/en/l18-beispiel.visustruct":Ek,"../../lessons/diagramme/en/l18-java-fehler-loesung.visustruct":Nk,"../../lessons/diagramme/en/l18-java-fehler-start.visustruct":Fk,"../../lessons/diagramme/en/l18-java-kasse-loesung.visustruct":Rk,"../../lessons/diagramme/en/l18-js-loesung.visustruct":Jk,"../../lessons/diagramme/en/l18-python-loesung.visustruct":Gk,"../../lessons/diagramme/en/l19-java-fehler-loesung.visustruct":Hk,"../../lessons/diagramme/en/l19-java-fehler-start.visustruct":Vk,"../../lessons/diagramme/en/l19-java-laeuft-nicht-loesung.visustruct":qk,"../../lessons/diagramme/en/l19-java-laeuft-nicht-start.visustruct":Qk,"../../lessons/diagramme/en/l19-java-zaehlen-loesung.visustruct":Uk,"../../lessons/diagramme/en/l2-ausgabe.visustruct":Yk,"../../lessons/diagramme/en/l2-hallo-loesung.visustruct":$k,"../../lessons/diagramme/en/l2-zwei-zeilen-loesung.visustruct":Kk,"../../lessons/diagramme/en/l23-java-ergaenzen-loesung.visustruct":Xk,"../../lessons/diagramme/en/l23-java-ergaenzen-start.visustruct":e7,"../../lessons/diagramme/en/l23-java-nummern-loesung.visustruct":t7,"../../lessons/diagramme/en/l23-java-nummern-start.visustruct":n7,"../../lessons/diagramme/en/l24-java-fuchs-loesung.visustruct":i7,"../../lessons/diagramme/en/l24-java-fuchs-start.visustruct":a7,"../../lessons/diagramme/en/l24-java-laengster-loesung.visustruct":s7,"../../lessons/diagramme/en/l24-java-laengster-start.visustruct":r7,"../../lessons/diagramme/en/l25-java-beste-loesung.visustruct":o7,"../../lessons/diagramme/en/l25-java-beste-start.visustruct":l7,"../../lessons/diagramme/en/l25-java-schnitt-loesung.visustruct":u7,"../../lessons/diagramme/en/l25-java-schnitt-start.visustruct":m7,"../../lessons/diagramme/en/l26-java-namen-loesung.visustruct":c7,"../../lessons/diagramme/en/l26-java-namen-start.visustruct":d7,"../../lessons/diagramme/en/l26-java-schreiben-loesung.visustruct":h7,"../../lessons/diagramme/en/l26-java-schreiben-start.visustruct":g7,"../../lessons/diagramme/en/l27-java-json-loesung.visustruct":p7,"../../lessons/diagramme/en/l27-java-json-start.visustruct":f7,"../../lessons/diagramme/en/l27-java-saetze-loesung.visustruct":b7,"../../lessons/diagramme/en/l27-java-saetze-start.visustruct":x7,"../../lessons/diagramme/en/sim-kino-loesung.visustruct":v7,"../../lessons/diagramme/en/sim-kino-start.visustruct":y7,"../../lessons/diagramme/en/sim-tausch-loesung.visustruct":w7,"../../lessons/diagramme/en/sim-tausch-start.visustruct":z7,"../../lessons/diagramme/en/sim-tausch.visustruct":I7,"../../lessons/diagramme/en/ss-absteigend-loesung.visustruct":k7,"../../lessons/diagramme/en/ss-absteigend-start.visustruct":S7,"../../lessons/diagramme/en/ss-binaere-suche.visustruct":T7,"../../lessons/diagramme/en/ss-bubblesort.visustruct":_7,"../../lessons/diagramme/en/ss-karte-suchen-loesung.visustruct":j7,"../../lessons/diagramme/en/ss-lineare-suche.visustruct":A7,"../../lessons/diagramme/en/uebergabe-bonus-loesung.visustruct":C7,"../../lessons/diagramme/en/uebergabe-bonus-start.visustruct":D7,"../../lessons/diagramme/en/uebergabe-bonus-unterprogramm-loesung.visustruct":P7,"../../lessons/diagramme/en/uebergabe-haupt.visustruct":B7,"../../lessons/diagramme/en/uebergabe-leeren.visustruct":O7,"../../lessons/diagramme/en/uebergabe-verdopple.visustruct":M7,"../../lessons/diagramme/en/vb-abstand-anzeigen-loesung.visustruct":Z7,"../../lessons/diagramme/en/vb-abstand-halten-loesung.visustruct":L7,"../../lessons/diagramme/en/vb-alarmanlage-loesung.visustruct":W7,"../../lessons/diagramme/en/vb-ampel-loesung.visustruct":E7,"../../lessons/diagramme/en/vb-ampel-zustand-loesung.visustruct":N7,"../../lessons/diagramme/en/vb-ausgang-loesung.visustruct":F7,"../../lessons/diagramme/en/vb-begruessung-loesung.visustruct":R7,"../../lessons/diagramme/en/vb-binaer-zaehlen-loesung.visustruct":J7,"../../lessons/diagramme/en/vb-bis-rot-loesung.visustruct":G7,"../../lessons/diagramme/en/vb-bis-wand-loesung.visustruct":H7,"../../lessons/diagramme/en/vb-bis-ziel-loesung.visustruct":V7,"../../lessons/diagramme/en/vb-buchstaben-loesung.visustruct":q7,"../../lessons/diagramme/en/vb-do-while-loesung.visustruct":Q7,"../../lessons/diagramme/en/vb-drei-lichter-loesung.visustruct":U7,"../../lessons/diagramme/en/vb-dreieck-loesung.visustruct":Y7,"../../lessons/diagramme/en/vb-einparken-loesung.visustruct":$7,"../../lessons/diagramme/en/vb-erster-plan-loesung.visustruct":K7,"../../lessons/diagramme/en/vb-farben-loesung.visustruct":X7,"../../lessons/diagramme/en/vb-farbweiche-loesung.visustruct":e8,"../../lessons/diagramme/en/vb-fehler-04-sensoren-start.visustruct":t8,"../../lessons/diagramme/en/vb-fehler-05-bis-zur-wand-start.visustruct":n8,"../../lessons/diagramme/en/vb-fehler-05-erst-fahren-dann-pruefen-start.visustruct":i8,"../../lessons/diagramme/en/vb-fehler-05-zaehlen-und-summieren-start.visustruct":a8,"../../lessons/diagramme/en/vb-fehler-06-abstand-start.visustruct":s8,"../../lessons/diagramme/en/vb-fehler-06-konstanten-final-start.visustruct":r8,"../../lessons/diagramme/en/vb-fehler-06-nah-mittel-weit-start.visustruct":o8,"../../lessons/diagramme/en/vb-fehler-07-linie-start.visustruct":l8,"../../lessons/diagramme/en/vb-fehler-07-und-oder-start.visustruct":u8,"../../lessons/diagramme/en/vb-fehler-08-farben-start.visustruct":m8,"../../lessons/diagramme/en/vb-fehler-08-groesster-wert-start.visustruct":c8,"../../lessons/diagramme/en/vb-fehler-09-fallauswahl-mbot2-start.visustruct":d8,"../../lessons/diagramme/en/vb-fehler-10-tasten-joystick-start.visustruct":h8,"../../lessons/diagramme/en/vb-fehler-10-unterbrechen-mit-break-start.visustruct":g8,"../../lessons/diagramme/en/vb-fehler-11-licht-start.visustruct":p8,"../../lessons/diagramme/en/vb-fehler-11-merker-boolean-start.visustruct":f8,"../../lessons/diagramme/en/vb-fehler-12-lautstaerke-start.visustruct":b8,"../../lessons/diagramme/en/vb-fehler-13-neigung-start.visustruct":x8,"../../lessons/diagramme/en/vb-fehler-14-leds-start.visustruct":v8,"../../lessons/diagramme/en/vb-fehler-15-einzelne-leds-start.visustruct":y8,"../../lessons/diagramme/en/vb-fehler-16-lautsprecher-start.visustruct":w8,"../../lessons/diagramme/en/vb-fehler-17-arrays-melodie-start.visustruct":z8,"../../lessons/diagramme/en/vb-fehler-18-bildschirm-start.visustruct":I8,"../../lessons/diagramme/en/vb-fehler-19-zeichenketten-start.visustruct":k8,"../../lessons/diagramme/en/vb-fehler-20-motoren-start.visustruct":S8,"../../lessons/diagramme/en/vb-fehler-21-stoppuhr-akku-start.visustruct":T8,"../../lessons/diagramme/en/vb-fehler-21-zustaende-start.visustruct":_8,"../../lessons/diagramme/en/vb-fehler-22-eigene-methoden-start.visustruct":j8,"../../lessons/diagramme/en/vb-gas-bis-wand-loesung.visustruct":A8,"../../lessons/diagramme/en/vb-gerade-loesung.visustruct":C8,"../../lessons/diagramme/en/vb-hindernis-loesung.visustruct":D8,"../../lessons/diagramme/en/vb-java-akku-loesung.visustruct":P8,"../../lessons/diagramme/en/vb-java-ampel-text-loesung.visustruct":B8,"../../lessons/diagramme/en/vb-java-blau-gruen-loesung.visustruct":O8,"../../lessons/diagramme/en/vb-java-blinken-loesung.visustruct":M8,"../../lessons/diagramme/en/vb-java-countdown-loesung.visustruct":Z8,"../../lessons/diagramme/en/vb-java-hoeher-loesung.visustruct":L8,"../../lessons/diagramme/en/vb-java-joystick-loesung.visustruct":W8,"../../lessons/diagramme/en/vb-java-klatsch-merker-loesung.visustruct":E8,"../../lessons/diagramme/en/vb-java-konstante-seite-loesung.visustruct":N8,"../../lessons/diagramme/en/vb-java-laermampel-loesung.visustruct":F8,"../../lessons/diagramme/en/vb-java-lauflicht-loesung.visustruct":R8,"../../lessons/diagramme/en/vb-java-linienfolger-loesung.visustruct":J8,"../../lessons/diagramme/en/vb-java-nachtlicht-ton-loesung.visustruct":G8,"../../lessons/diagramme/en/vb-java-rand-loesung.visustruct":H8,"../../lessons/diagramme/en/vb-java-rechteck-loesung.visustruct":V8,"../../lessons/diagramme/en/vb-java-rechteck-umdrehungen-loesung.visustruct":q8,"../../lessons/diagramme/en/vb-java-richtung-loesung.visustruct":Q8,"../../lessons/diagramme/en/vb-java-schritte-zaehlen-loesung.visustruct":U8,"../../lessons/diagramme/en/vb-java-sicher-fahren-loesung.visustruct":Y8,"../../lessons/diagramme/en/vb-java-spirale-strecke-loesung.visustruct":$8,"../../lessons/diagramme/en/vb-java-tageszeit-loesung.visustruct":K8,"../../lessons/diagramme/en/vb-java-taste-stopp-loesung.visustruct":X8,"../../lessons/diagramme/en/vb-java-textlaenge-loesung.visustruct":eS,"../../lessons/diagramme/en/vb-java-wand-piep-loesung.visustruct":tS,"../../lessons/diagramme/en/vb-java-wasserwaage-loesung.visustruct":nS,"../../lessons/diagramme/en/vb-klatschen-loesung.visustruct":iS,"../../lessons/diagramme/en/vb-knight-rider-loesung.visustruct":aS,"../../lessons/diagramme/en/vb-konstante-wand-loesung.visustruct":sS,"../../lessons/diagramme/en/vb-l00-bausteine-loesung.visustruct":rS,"../../lessons/diagramme/en/vb-l00-sequenz-loesung.visustruct":oS,"../../lessons/diagramme/en/vb-l03-wachsend-loesung.visustruct":lS,"../../lessons/diagramme/en/vb-l06k-mit.visustruct":uS,"../../lessons/diagramme/en/vb-l06k-ohne.visustruct":mS,"../../lessons/diagramme/en/vb-l06n-einparkhilfe.visustruct":cS,"../../lessons/diagramme/en/vb-l21z-ausweichen.visustruct":dS,"../../lessons/diagramme/en/vb-labyrinth-loesung.visustruct":hS,"../../lessons/diagramme/en/vb-laufschrift-loesung.visustruct":gS,"../../lessons/diagramme/en/vb-linienfolger-stopp-loesung.visustruct":pS,"../../lessons/diagramme/en/vb-linienmuster-loesung.visustruct":fS,"../../lessons/diagramme/en/vb-meister-platz-loesung.visustruct":bS,"../../lessons/diagramme/en/vb-melodie-loesung.visustruct":xS,"../../lessons/diagramme/en/vb-messreihe-loesung.visustruct":vS,"../../lessons/diagramme/en/vb-morsen-loesung.visustruct":yS,"../../lessons/diagramme/en/vb-nachtlicht-loesung.visustruct":wS,"../../lessons/diagramme/en/vb-nachtwaechter-loesung.visustruct":zS,"../../lessons/diagramme/en/vb-notbremse-loesung.visustruct":IS,"../../lessons/diagramme/en/vb-oder-loesung.visustruct":kS,"../../lessons/diagramme/en/vb-quadrat-loesung.visustruct":SS,"../../lessons/diagramme/en/vb-quadrat-methode-loesung.visustruct":TS,"../../lessons/diagramme/en/vb-quadrat-schleife-loesung.visustruct":_S,"../../lessons/diagramme/en/vb-quadrat-unterprogramm-loesung.visustruct":jS,"../../lessons/diagramme/en/vb-quadrat-verschachtelt-loesung.visustruct":AS,"../../lessons/diagramme/en/vb-rand-loesung.visustruct":CS,"../../lessons/diagramme/en/vb-schraeglage-loesung.visustruct":DS,"../../lessons/diagramme/en/vb-schritte-welt-loesung.visustruct":PS,"../../lessons/diagramme/en/vb-slalom-loesung.visustruct":BS,"../../lessons/diagramme/en/vb-spirale-falsch-loesung.visustruct":OS,"../../lessons/diagramme/en/vb-spirale-falsch-start.visustruct":MS,"../../lessons/diagramme/en/vb-spirale-loesung.visustruct":ZS,"../../lessons/diagramme/en/vb-start-a-loesung.visustruct":LS,"../../lessons/diagramme/en/vb-startsignal-loesung.visustruct":WS,"../../lessons/diagramme/en/vb-strecke-anzeigen-loesung.visustruct":ES,"../../lessons/diagramme/en/vb-tempo-abstand-loesung.visustruct":NS,"../../lessons/diagramme/en/vb-tonleiter-loesung.visustruct":FS,"../../lessons/diagramme/en/vb-treppe-loesung.visustruct":RS,"../../lessons/diagramme/en/vb-tunnel-loesung.visustruct":JS,"../../lessons/diagramme/en/vb-ueberladung-umdrehung-loesung.visustruct":GS,"../../lessons/diagramme/en/vb-und-loesung.visustruct":HS,"../../lessons/diagramme/en/vb-variable-seite-loesung.visustruct":VS,"../../lessons/diagramme/en/vb-vier-quadrate-loesung.visustruct":qS,"../../lessons/diagramme/en/vb-wald-loesung.visustruct":QS,"../../lessons/diagramme/en/vb-wand-vorn-loesung.visustruct":US,"../../lessons/diagramme/en/vb-wurde-es-dunkel-loesung.visustruct":YS,"../../lessons/diagramme/en/vb-zentimeter-loesung.visustruct":$S,"../../lessons/diagramme/en/vb-zentimeter-unterprogramm-loesung.visustruct":KS,"../../lessons/diagramme/en/vb-zwei-sekunden-loesung.visustruct":XS,"../../lessons/diagramme/en/zk-initialen-loesung.visustruct":eT,"../../lessons/diagramme/en/zk-mehr.visustruct":tT,"../../lessons/diagramme/en/zk-rueckwaerts-loesung.visustruct":nT,"../../lessons/diagramme/en/zk-split.visustruct":iT,"../../lessons/diagramme/en/zk-woerter-loesung.visustruct":aT,"../../lessons/diagramme/en/zk-zaehlen.visustruct":sT,"../../lessons/diagramme/en/zk-zeichen.visustruct":rT,"../../lessons/diagramme/kino-einmaleins-loesung.visustruct":oT,"../../lessons/diagramme/kino-frei-loesung.visustruct":lT,"../../lessons/diagramme/kino-frei-start.visustruct":uT,"../../lessons/diagramme/kino-karte-loesung.visustruct":mT,"../../lessons/diagramme/kino-karte-start.visustruct":cT,"../../lessons/diagramme/kino-saalplan.visustruct":dT,"../../lessons/diagramme/kino-verkaufen.visustruct":hT,"../../lessons/diagramme/l04-gross-klein-loesung.visustruct":gT,"../../lessons/diagramme/l04-gross-klein-start.visustruct":pT,"../../lessons/diagramme/l04-java-fehler-loesung.visustruct":fT,"../../lessons/diagramme/l04-java-fehler-start.visustruct":bT,"../../lessons/diagramme/l04-java-laeuft-nicht-loesung.visustruct":xT,"../../lessons/diagramme/l04-java-laeuft-nicht-start.visustruct":vT,"../../lessons/diagramme/l04-java-steckbrief-loesung.visustruct":yT,"../../lessons/diagramme/l04-rechnen.visustruct":wT,"../../lessons/diagramme/l04-reihenfolge-loesung.visustruct":zT,"../../lessons/diagramme/l04-reihenfolge-start.visustruct":IT,"../../lessons/diagramme/l04-tauschen-loesung.visustruct":kT,"../../lessons/diagramme/l04-tauschen-start.visustruct":ST,"../../lessons/diagramme/l04-tauschen.visustruct":TT,"../../lessons/diagramme/l05-datentypen.visustruct":_T,"../../lessons/diagramme/l05-division.visustruct":jT,"../../lessons/diagramme/l05-einkauf-loesung.visustruct":AT,"../../lessons/diagramme/l05-java-fehler-loesung.visustruct":CT,"../../lessons/diagramme/l05-java-fehler-start.visustruct":DT,"../../lessons/diagramme/l05-java-kino-loesung.visustruct":PT,"../../lessons/diagramme/l05-java-laeuft-nicht-loesung.visustruct":BT,"../../lessons/diagramme/l05-java-laeuft-nicht-start.visustruct":OT,"../../lessons/diagramme/l05-rechteck-loesung.visustruct":MT,"../../lessons/diagramme/l05-sekunden-loesung.visustruct":ZT,"../../lessons/diagramme/l05-sekunden-start.visustruct":LT,"../../lessons/diagramme/l05-sequenz.visustruct":WT,"../../lessons/diagramme/l06-begruessung-loesung.visustruct":ET,"../../lessons/diagramme/l06-eva.visustruct":NT,"../../lessons/diagramme/l06-java-fehler-loesung.visustruct":FT,"../../lessons/diagramme/l06-java-fehler-start.visustruct":RT,"../../lessons/diagramme/l06-java-laeuft-nicht-loesung.visustruct":JT,"../../lessons/diagramme/l06-java-laeuft-nicht-start.visustruct":GT,"../../lessons/diagramme/l06-java-tage-loesung.visustruct":HT,"../../lessons/diagramme/l06-mittelwert-loesung.visustruct":VT,"../../lessons/diagramme/l06-rechner-loesung.visustruct":qT,"../../lessons/diagramme/l07-alter-pruefen.visustruct":QT,"../../lessons/diagramme/l07-betrag-loesung.visustruct":UT,"../../lessons/diagramme/l07-gerade-loesung.visustruct":YT,"../../lessons/diagramme/l07-java-fehler-loesung.visustruct":$T,"../../lessons/diagramme/l07-java-fehler-start.visustruct":KT,"../../lessons/diagramme/l07-java-laeuft-nicht-loesung.visustruct":XT,"../../lessons/diagramme/l07-java-laeuft-nicht-start.visustruct":e_,"../../lessons/diagramme/l07-java-pizza-loesung.visustruct":t_,"../../lessons/diagramme/l07-java-pizza-start.visustruct":n_,"../../lessons/diagramme/l07-maximum-loesung.visustruct":i_,"../../lessons/diagramme/l07-rabatt.visustruct":a_,"../../lessons/diagramme/l08-gueltig-loesung.visustruct":s_,"../../lessons/diagramme/l08-java-bestanden-loesung.visustruct":r_,"../../lessons/diagramme/l08-java-fehler-loesung.visustruct":o_,"../../lessons/diagramme/l08-java-fehler-start.visustruct":l_,"../../lessons/diagramme/l08-java-laeuft-nicht-loesung.visustruct":u_,"../../lessons/diagramme/l08-java-laeuft-nicht-start.visustruct":m_,"../../lessons/diagramme/l08-jugendticket.visustruct":c_,"../../lessons/diagramme/l08-note.visustruct":d_,"../../lessons/diagramme/l08-schaltjahr-loesung.visustruct":h_,"../../lessons/diagramme/l08-wochenende-loesung.visustruct":g_,"../../lessons/diagramme/l09-ampel.visustruct":p_,"../../lessons/diagramme/l09-automat.visustruct":f_,"../../lessons/diagramme/l09-java-fehler-loesung.visustruct":b_,"../../lessons/diagramme/l09-java-fehler-start.visustruct":x_,"../../lessons/diagramme/l09-java-laeuft-nicht-loesung.visustruct":v_,"../../lessons/diagramme/l09-java-laeuft-nicht-start.visustruct":y_,"../../lessons/diagramme/l09-java-schule-loesung.visustruct":w_,"../../lessons/diagramme/l09-note-loesung.visustruct":z_,"../../lessons/diagramme/l09-rechner-loesung.visustruct":I_,"../../lessons/diagramme/l09-verschachtelt.visustruct":k_,"../../lessons/diagramme/l1-grundbausteine.visustruct":S_,"../../lessons/diagramme/l1-sequenz.visustruct":T_,"../../lessons/diagramme/l1-tee.visustruct":__,"../../lessons/diagramme/l1-verzweigung.visustruct":j_,"../../lessons/diagramme/l1-wiederholung.visustruct":A_,"../../lessons/diagramme/l10-bis-n-loesung.visustruct":C_,"../../lessons/diagramme/l10-countdown.visustruct":D_,"../../lessons/diagramme/l10-endlos.visustruct":P_,"../../lessons/diagramme/l10-fakultaet.visustruct":B_,"../../lessons/diagramme/l10-java-fehler-loesung.visustruct":O_,"../../lessons/diagramme/l10-java-fehler-start.visustruct":M_,"../../lessons/diagramme/l10-java-laeuft-nicht-loesung.visustruct":Z_,"../../lessons/diagramme/l10-java-laeuft-nicht-start.visustruct":L_,"../../lessons/diagramme/l10-java-wuerfel-loesung.visustruct":W_,"../../lessons/diagramme/l10-verdoppeln-loesung.visustruct":E_,"../../lessons/diagramme/l11-eingabe-pruefen.visustruct":N_,"../../lessons/diagramme/l11-einmal.visustruct":F_,"../../lessons/diagramme/l11-java-fehler-loesung.visustruct":R_,"../../lessons/diagramme/l11-java-fehler-start.visustruct":J_,"../../lessons/diagramme/l11-java-gerade-loesung.visustruct":G_,"../../lessons/diagramme/l11-java-laeuft-nicht-loesung.visustruct":H_,"../../lessons/diagramme/l11-java-laeuft-nicht-start.visustruct":V_,"../../lessons/diagramme/l11-note-loesung.visustruct":q_,"../../lessons/diagramme/l11-summe-loesung.visustruct":Q_,"../../lessons/diagramme/l12-countdown-loesung.visustruct":U_,"../../lessons/diagramme/l12-einmaleins-loesung.visustruct":Y_,"../../lessons/diagramme/l12-eins-bis-fuenf.visustruct":$_,"../../lessons/diagramme/l12-java-fehler-loesung.visustruct":K_,"../../lessons/diagramme/l12-java-fehler-start.visustruct":X_,"../../lessons/diagramme/l12-java-laeuft-nicht-loesung.visustruct":ej,"../../lessons/diagramme/l12-java-laeuft-nicht-start.visustruct":tj,"../../lessons/diagramme/l12-java-verdoppeln-loesung.visustruct":nj,"../../lessons/diagramme/l12-summe.visustruct":ij,"../../lessons/diagramme/l13-dreieck.visustruct":aj,"../../lessons/diagramme/l13-gerade-eingaben-loesung.visustruct":sj,"../../lessons/diagramme/l13-gerade-zaehlen.visustruct":rj,"../../lessons/diagramme/l13-java-fehler-loesung.visustruct":oj,"../../lessons/diagramme/l13-java-fehler-start.visustruct":lj,"../../lessons/diagramme/l13-java-laeuft-nicht-loesung.visustruct":uj,"../../lessons/diagramme/l13-java-laeuft-nicht-start.visustruct":mj,"../../lessons/diagramme/l13-java-quadrate-loesung.visustruct":cj,"../../lessons/diagramme/l13-rechteck-loesung.visustruct":dj,"../../lessons/diagramme/l14-array-durchlaufen.visustruct":hj,"../../lessons/diagramme/l14-erster-letzter-loesung.visustruct":gj,"../../lessons/diagramme/l14-java-fehler-loesung.visustruct":pj,"../../lessons/diagramme/l14-java-fehler-start.visustruct":fj,"../../lessons/diagramme/l14-java-laeuft-nicht-loesung.visustruct":bj,"../../lessons/diagramme/l14-java-laeuft-nicht-start.visustruct":xj,"../../lessons/diagramme/l14-java-treppe-loesung.visustruct":vj,"../../lessons/diagramme/l14-namen-eingeben.visustruct":yj,"../../lessons/diagramme/l14-rueckwaerts-loesung.visustruct":wj,"../../lessons/diagramme/l14-summe-max-loesung.visustruct":zj,"../../lessons/diagramme/l14-summe-maximum.visustruct":Ij,"../../lessons/diagramme/l15-bis-null-loesung.visustruct":kj,"../../lessons/diagramme/l15-endlos-aussprung.visustruct":Sj,"../../lessons/diagramme/l15-flaeche-loesung.visustruct":Tj,"../../lessons/diagramme/l15-flaeche-unterprogramm-loesung.visustruct":_j,"../../lessons/diagramme/l15-hauptprogramm.visustruct":jj,"../../lessons/diagramme/l15-java-fehler-loesung.visustruct":Aj,"../../lessons/diagramme/l15-java-fehler-start.visustruct":Cj,"../../lessons/diagramme/l15-java-laeuft-nicht-loesung.visustruct":Dj,"../../lessons/diagramme/l15-java-laeuft-nicht-start.visustruct":Pj,"../../lessons/diagramme/l15-java-noten-loesung.visustruct":Bj,"../../lessons/diagramme/l15-quadrat-haupt.visustruct":Oj,"../../lessons/diagramme/l15-quadrat.visustruct":Mj,"../../lessons/diagramme/l15-titel-loesung.visustruct":Zj,"../../lessons/diagramme/l15-unterprogramm.visustruct":Lj,"../../lessons/diagramme/l15-zeige-summe-haupt.visustruct":Wj,"../../lessons/diagramme/l15-zeige-summe.visustruct":Ej,"../../lessons/diagramme/l16-countdown-loesung.visustruct":Nj,"../../lessons/diagramme/l16-countdown-start.visustruct":Fj,"../../lessons/diagramme/l16-java-fehler-loesung.visustruct":Rj,"../../lessons/diagramme/l16-java-fehler-start.visustruct":Jj,"../../lessons/diagramme/l16-java-laeuft-nicht-loesung.visustruct":Gj,"../../lessons/diagramme/l16-java-laeuft-nicht-start.visustruct":Hj,"../../lessons/diagramme/l16-java-punkte-loesung.visustruct":Vj,"../../lessons/diagramme/l16-schreibtisch.visustruct":qj,"../../lessons/diagramme/l16-summe-loesung.visustruct":Qj,"../../lessons/diagramme/l16-summe-start.visustruct":Uj,"../../lessons/diagramme/l17-beispiel.visustruct":Yj,"../../lessons/diagramme/l17-fakultaet-loesung.visustruct":$j,"../../lessons/diagramme/l17-java-brief-loesung.visustruct":Kj,"../../lessons/diagramme/l17-java-brief-start.visustruct":Xj,"../../lessons/diagramme/l17-java-fehler-loesung.visustruct":eA,"../../lessons/diagramme/l17-java-fehler-start.visustruct":tA,"../../lessons/diagramme/l17-java-laeuft-nicht-loesung.visustruct":nA,"../../lessons/diagramme/l17-java-laeuft-nicht-start.visustruct":iA,"../../lessons/diagramme/l17-java-passwort-loesung.visustruct":aA,"../../lessons/diagramme/l17-ticket-loesung.visustruct":sA,"../../lessons/diagramme/l18-beispiel.visustruct":rA,"../../lessons/diagramme/l18-java-fehler-loesung.visustruct":oA,"../../lessons/diagramme/l18-java-fehler-start.visustruct":lA,"../../lessons/diagramme/l18-java-kasse-loesung.visustruct":uA,"../../lessons/diagramme/l18-js-loesung.visustruct":mA,"../../lessons/diagramme/l18-python-loesung.visustruct":cA,"../../lessons/diagramme/l19-java-fehler-loesung.visustruct":dA,"../../lessons/diagramme/l19-java-fehler-start.visustruct":hA,"../../lessons/diagramme/l19-java-laeuft-nicht-loesung.visustruct":gA,"../../lessons/diagramme/l19-java-laeuft-nicht-start.visustruct":pA,"../../lessons/diagramme/l19-java-zaehlen-loesung.visustruct":fA,"../../lessons/diagramme/l2-ausgabe.visustruct":bA,"../../lessons/diagramme/l2-hallo-loesung.visustruct":xA,"../../lessons/diagramme/l2-zwei-zeilen-loesung.visustruct":vA,"../../lessons/diagramme/l20-countdown-loesung.visustruct":yA,"../../lessons/diagramme/l23-java-ergaenzen-loesung.visustruct":wA,"../../lessons/diagramme/l23-java-ergaenzen-start.visustruct":zA,"../../lessons/diagramme/l23-java-nummern-loesung.visustruct":IA,"../../lessons/diagramme/l23-java-nummern-start.visustruct":kA,"../../lessons/diagramme/l24-java-fuchs-loesung.visustruct":SA,"../../lessons/diagramme/l24-java-fuchs-start.visustruct":TA,"../../lessons/diagramme/l24-java-laengster-loesung.visustruct":_A,"../../lessons/diagramme/l24-java-laengster-start.visustruct":jA,"../../lessons/diagramme/l25-java-beste-loesung.visustruct":AA,"../../lessons/diagramme/l25-java-beste-start.visustruct":CA,"../../lessons/diagramme/l25-java-schnitt-loesung.visustruct":DA,"../../lessons/diagramme/l25-java-schnitt-start.visustruct":PA,"../../lessons/diagramme/l26-java-namen-loesung.visustruct":BA,"../../lessons/diagramme/l26-java-namen-start.visustruct":OA,"../../lessons/diagramme/l26-java-schreiben-loesung.visustruct":MA,"../../lessons/diagramme/l26-java-schreiben-start.visustruct":ZA,"../../lessons/diagramme/l27-java-json-loesung.visustruct":LA,"../../lessons/diagramme/l27-java-json-start.visustruct":WA,"../../lessons/diagramme/l27-java-saetze-loesung.visustruct":EA,"../../lessons/diagramme/l27-java-saetze-start.visustruct":NA,"../../lessons/diagramme/pt/aufgabe-alter-haupt-loesung.visustruct":FA,"../../lessons/diagramme/pt/aufgabe-alter-unterprogramm-loesung.visustruct":RA,"../../lessons/diagramme/pt/aufgabe-ballwurf-loesung.visustruct":JA,"../../lessons/diagramme/pt/aufgabe-ballwurf-start.visustruct":GA,"../../lessons/diagramme/pt/aufgabe-bestenliste-loesung.visustruct":HA,"../../lessons/diagramme/pt/aufgabe-binaer-loesung.visustruct":VA,"../../lessons/diagramme/pt/aufgabe-caesar-array-loesung.visustruct":qA,"../../lessons/diagramme/pt/aufgabe-caesar-array-start.visustruct":QA,"../../lessons/diagramme/pt/aufgabe-caesar-ascii-loesung.visustruct":UA,"../../lessons/diagramme/pt/aufgabe-caesar-entschluesseln-loesung.visustruct":YA,"../../lessons/diagramme/pt/aufgabe-collatz-loesung.visustruct":$A,"../../lessons/diagramme/pt/aufgabe-durchschnitt-loesung.visustruct":KA,"../../lessons/diagramme/pt/aufgabe-fibonacci-loesung.visustruct":XA,"../../lessons/diagramme/pt/aufgabe-gerade-loesung.visustruct":eC,"../../lessons/diagramme/pt/aufgabe-mehrwertsteuer-loesung.visustruct":tC,"../../lessons/diagramme/pt/aufgabe-pin-java-loesung.visustruct":nC,"../../lessons/diagramme/pt/aufgabe-pin-loesung.visustruct":iC,"../../lessons/diagramme/pt/aufgabe-rechner-loesung.visustruct":aC,"../../lessons/diagramme/pt/aufgabe-schiffe-loesung.visustruct":sC,"../../lessons/diagramme/pt/aufgabe-schiffe-start.visustruct":rC,"../../lessons/diagramme/pt/aufgabe-speisekarte-loesung.visustruct":oC,"../../lessons/diagramme/pt/aufgabe-summe-loesung.visustruct":lC,"../../lessons/diagramme/pt/aufgabe-tafeldienst-loesung.visustruct":uC,"../../lessons/diagramme/pt/aufgabe-verdoppeln-loesung.visustruct":mC,"../../lessons/diagramme/pt/aufgabe-verleih-java-loesung.visustruct":cC,"../../lessons/diagramme/pt/aufgabe-verleih-loesung.visustruct":dC,"../../lessons/diagramme/pt/aufgabe-vokabeln-loesung.visustruct":hC,"../../lessons/diagramme/pt/aufgabe-vokabeln-start.visustruct":gC,"../../lessons/diagramme/pt/aufgabe-volljaehrig-loesung.visustruct":pC,"../../lessons/diagramme/pt/dt-buffered.visustruct":fC,"../../lessons/diagramme/pt/dt-csv.visustruct":bC,"../../lessons/diagramme/pt/dt-json.visustruct":xC,"../../lessons/diagramme/pt/dt-lesen.visustruct":vC,"../../lessons/diagramme/pt/kino-einmaleins-loesung.visustruct":yC,"../../lessons/diagramme/pt/kino-frei-loesung.visustruct":wC,"../../lessons/diagramme/pt/kino-frei-start.visustruct":zC,"../../lessons/diagramme/pt/kino-karte-loesung.visustruct":IC,"../../lessons/diagramme/pt/kino-karte-start.visustruct":kC,"../../lessons/diagramme/pt/kino-saalplan.visustruct":SC,"../../lessons/diagramme/pt/kino-verkaufen.visustruct":TC,"../../lessons/diagramme/pt/l04-gross-klein-loesung.visustruct":_C,"../../lessons/diagramme/pt/l04-gross-klein-start.visustruct":jC,"../../lessons/diagramme/pt/l04-java-fehler-loesung.visustruct":AC,"../../lessons/diagramme/pt/l04-java-fehler-start.visustruct":CC,"../../lessons/diagramme/pt/l04-java-laeuft-nicht-loesung.visustruct":DC,"../../lessons/diagramme/pt/l04-java-laeuft-nicht-start.visustruct":PC,"../../lessons/diagramme/pt/l04-java-steckbrief-loesung.visustruct":BC,"../../lessons/diagramme/pt/l04-rechnen.visustruct":OC,"../../lessons/diagramme/pt/l04-reihenfolge-loesung.visustruct":MC,"../../lessons/diagramme/pt/l04-reihenfolge-start.visustruct":ZC,"../../lessons/diagramme/pt/l04-tauschen-loesung.visustruct":LC,"../../lessons/diagramme/pt/l04-tauschen-start.visustruct":WC,"../../lessons/diagramme/pt/l04-tauschen.visustruct":EC,"../../lessons/diagramme/pt/l05-datentypen.visustruct":NC,"../../lessons/diagramme/pt/l05-division.visustruct":FC,"../../lessons/diagramme/pt/l05-einkauf-loesung.visustruct":RC,"../../lessons/diagramme/pt/l05-java-fehler-loesung.visustruct":JC,"../../lessons/diagramme/pt/l05-java-fehler-start.visustruct":GC,"../../lessons/diagramme/pt/l05-java-kino-loesung.visustruct":HC,"../../lessons/diagramme/pt/l05-java-laeuft-nicht-loesung.visustruct":VC,"../../lessons/diagramme/pt/l05-java-laeuft-nicht-start.visustruct":qC,"../../lessons/diagramme/pt/l05-rechteck-loesung.visustruct":QC,"../../lessons/diagramme/pt/l05-sekunden-loesung.visustruct":UC,"../../lessons/diagramme/pt/l05-sekunden-start.visustruct":YC,"../../lessons/diagramme/pt/l05-sequenz.visustruct":$C,"../../lessons/diagramme/pt/l06-begruessung-loesung.visustruct":KC,"../../lessons/diagramme/pt/l06-eva.visustruct":XC,"../../lessons/diagramme/pt/l06-java-fehler-loesung.visustruct":eD,"../../lessons/diagramme/pt/l06-java-fehler-start.visustruct":tD,"../../lessons/diagramme/pt/l06-java-laeuft-nicht-loesung.visustruct":nD,"../../lessons/diagramme/pt/l06-java-laeuft-nicht-start.visustruct":iD,"../../lessons/diagramme/pt/l06-java-tage-loesung.visustruct":aD,"../../lessons/diagramme/pt/l06-mittelwert-loesung.visustruct":sD,"../../lessons/diagramme/pt/l06-rechner-loesung.visustruct":rD,"../../lessons/diagramme/pt/l07-alter-pruefen.visustruct":oD,"../../lessons/diagramme/pt/l07-betrag-loesung.visustruct":lD,"../../lessons/diagramme/pt/l07-gerade-loesung.visustruct":uD,"../../lessons/diagramme/pt/l07-java-fehler-loesung.visustruct":mD,"../../lessons/diagramme/pt/l07-java-fehler-start.visustruct":cD,"../../lessons/diagramme/pt/l07-java-laeuft-nicht-loesung.visustruct":dD,"../../lessons/diagramme/pt/l07-java-laeuft-nicht-start.visustruct":hD,"../../lessons/diagramme/pt/l07-java-pizza-loesung.visustruct":gD,"../../lessons/diagramme/pt/l07-java-pizza-start.visustruct":pD,"../../lessons/diagramme/pt/l07-maximum-loesung.visustruct":fD,"../../lessons/diagramme/pt/l07-rabatt.visustruct":bD,"../../lessons/diagramme/pt/l08-gueltig-loesung.visustruct":xD,"../../lessons/diagramme/pt/l08-java-bestanden-loesung.visustruct":vD,"../../lessons/diagramme/pt/l08-java-fehler-loesung.visustruct":yD,"../../lessons/diagramme/pt/l08-java-fehler-start.visustruct":wD,"../../lessons/diagramme/pt/l08-java-laeuft-nicht-loesung.visustruct":zD,"../../lessons/diagramme/pt/l08-java-laeuft-nicht-start.visustruct":ID,"../../lessons/diagramme/pt/l08-jugendticket.visustruct":kD,"../../lessons/diagramme/pt/l08-note.visustruct":SD,"../../lessons/diagramme/pt/l08-schaltjahr-loesung.visustruct":TD,"../../lessons/diagramme/pt/l08-wochenende-loesung.visustruct":_D,"../../lessons/diagramme/pt/l09-ampel.visustruct":jD,"../../lessons/diagramme/pt/l09-automat.visustruct":AD,"../../lessons/diagramme/pt/l09-java-fehler-loesung.visustruct":CD,"../../lessons/diagramme/pt/l09-java-fehler-start.visustruct":DD,"../../lessons/diagramme/pt/l09-java-laeuft-nicht-loesung.visustruct":PD,"../../lessons/diagramme/pt/l09-java-laeuft-nicht-start.visustruct":BD,"../../lessons/diagramme/pt/l09-java-schule-loesung.visustruct":OD,"../../lessons/diagramme/pt/l09-note-loesung.visustruct":MD,"../../lessons/diagramme/pt/l09-rechner-loesung.visustruct":ZD,"../../lessons/diagramme/pt/l09-verschachtelt.visustruct":LD,"../../lessons/diagramme/pt/l1-grundbausteine.visustruct":WD,"../../lessons/diagramme/pt/l1-sequenz.visustruct":ED,"../../lessons/diagramme/pt/l1-tee.visustruct":ND,"../../lessons/diagramme/pt/l1-verzweigung.visustruct":FD,"../../lessons/diagramme/pt/l1-wiederholung.visustruct":RD,"../../lessons/diagramme/pt/l10-bis-n-loesung.visustruct":JD,"../../lessons/diagramme/pt/l10-countdown.visustruct":GD,"../../lessons/diagramme/pt/l10-endlos.visustruct":HD,"../../lessons/diagramme/pt/l10-fakultaet.visustruct":VD,"../../lessons/diagramme/pt/l10-java-fehler-loesung.visustruct":qD,"../../lessons/diagramme/pt/l10-java-fehler-start.visustruct":QD,"../../lessons/diagramme/pt/l10-java-laeuft-nicht-loesung.visustruct":UD,"../../lessons/diagramme/pt/l10-java-laeuft-nicht-start.visustruct":YD,"../../lessons/diagramme/pt/l10-java-wuerfel-loesung.visustruct":$D,"../../lessons/diagramme/pt/l10-verdoppeln-loesung.visustruct":KD,"../../lessons/diagramme/pt/l11-eingabe-pruefen.visustruct":XD,"../../lessons/diagramme/pt/l11-einmal.visustruct":eP,"../../lessons/diagramme/pt/l11-java-fehler-loesung.visustruct":tP,"../../lessons/diagramme/pt/l11-java-fehler-start.visustruct":nP,"../../lessons/diagramme/pt/l11-java-gerade-loesung.visustruct":iP,"../../lessons/diagramme/pt/l11-java-laeuft-nicht-loesung.visustruct":aP,"../../lessons/diagramme/pt/l11-java-laeuft-nicht-start.visustruct":sP,"../../lessons/diagramme/pt/l11-note-loesung.visustruct":rP,"../../lessons/diagramme/pt/l11-summe-loesung.visustruct":oP,"../../lessons/diagramme/pt/l12-countdown-loesung.visustruct":lP,"../../lessons/diagramme/pt/l12-einmaleins-loesung.visustruct":uP,"../../lessons/diagramme/pt/l12-eins-bis-fuenf.visustruct":mP,"../../lessons/diagramme/pt/l12-java-fehler-loesung.visustruct":cP,"../../lessons/diagramme/pt/l12-java-fehler-start.visustruct":dP,"../../lessons/diagramme/pt/l12-java-laeuft-nicht-loesung.visustruct":hP,"../../lessons/diagramme/pt/l12-java-laeuft-nicht-start.visustruct":gP,"../../lessons/diagramme/pt/l12-java-verdoppeln-loesung.visustruct":pP,"../../lessons/diagramme/pt/l12-summe.visustruct":fP,"../../lessons/diagramme/pt/l13-dreieck.visustruct":bP,"../../lessons/diagramme/pt/l13-gerade-eingaben-loesung.visustruct":xP,"../../lessons/diagramme/pt/l13-gerade-zaehlen.visustruct":vP,"../../lessons/diagramme/pt/l13-java-fehler-loesung.visustruct":yP,"../../lessons/diagramme/pt/l13-java-fehler-start.visustruct":wP,"../../lessons/diagramme/pt/l13-java-laeuft-nicht-loesung.visustruct":zP,"../../lessons/diagramme/pt/l13-java-laeuft-nicht-start.visustruct":IP,"../../lessons/diagramme/pt/l13-java-quadrate-loesung.visustruct":kP,"../../lessons/diagramme/pt/l13-rechteck-loesung.visustruct":SP,"../../lessons/diagramme/pt/l14-array-durchlaufen.visustruct":TP,"../../lessons/diagramme/pt/l14-erster-letzter-loesung.visustruct":_P,"../../lessons/diagramme/pt/l14-java-fehler-loesung.visustruct":jP,"../../lessons/diagramme/pt/l14-java-fehler-start.visustruct":AP,"../../lessons/diagramme/pt/l14-java-laeuft-nicht-loesung.visustruct":CP,"../../lessons/diagramme/pt/l14-java-laeuft-nicht-start.visustruct":DP,"../../lessons/diagramme/pt/l14-java-treppe-loesung.visustruct":PP,"../../lessons/diagramme/pt/l14-namen-eingeben.visustruct":BP,"../../lessons/diagramme/pt/l14-rueckwaerts-loesung.visustruct":OP,"../../lessons/diagramme/pt/l14-summe-max-loesung.visustruct":MP,"../../lessons/diagramme/pt/l14-summe-maximum.visustruct":ZP,"../../lessons/diagramme/pt/l15-bis-null-loesung.visustruct":LP,"../../lessons/diagramme/pt/l15-endlos-aussprung.visustruct":WP,"../../lessons/diagramme/pt/l15-flaeche-loesung.visustruct":EP,"../../lessons/diagramme/pt/l15-hauptprogramm.visustruct":NP,"../../lessons/diagramme/pt/l15-java-fehler-loesung.visustruct":FP,"../../lessons/diagramme/pt/l15-java-fehler-start.visustruct":RP,"../../lessons/diagramme/pt/l15-java-laeuft-nicht-loesung.visustruct":JP,"../../lessons/diagramme/pt/l15-java-laeuft-nicht-start.visustruct":GP,"../../lessons/diagramme/pt/l15-java-noten-loesung.visustruct":HP,"../../lessons/diagramme/pt/l15-quadrat-haupt.visustruct":VP,"../../lessons/diagramme/pt/l15-quadrat.visustruct":qP,"../../lessons/diagramme/pt/l15-titel-loesung.visustruct":QP,"../../lessons/diagramme/pt/l15-unterprogramm.visustruct":UP,"../../lessons/diagramme/pt/l15-zeige-summe-haupt.visustruct":YP,"../../lessons/diagramme/pt/l15-zeige-summe.visustruct":$P,"../../lessons/diagramme/pt/l16-countdown-loesung.visustruct":KP,"../../lessons/diagramme/pt/l16-countdown-start.visustruct":XP,"../../lessons/diagramme/pt/l16-java-fehler-loesung.visustruct":eB,"../../lessons/diagramme/pt/l16-java-fehler-start.visustruct":tB,"../../lessons/diagramme/pt/l16-java-laeuft-nicht-loesung.visustruct":nB,"../../lessons/diagramme/pt/l16-java-laeuft-nicht-start.visustruct":iB,"../../lessons/diagramme/pt/l16-java-punkte-loesung.visustruct":aB,"../../lessons/diagramme/pt/l16-schreibtisch.visustruct":sB,"../../lessons/diagramme/pt/l16-summe-loesung.visustruct":rB,"../../lessons/diagramme/pt/l16-summe-start.visustruct":oB,"../../lessons/diagramme/pt/l17-beispiel.visustruct":lB,"../../lessons/diagramme/pt/l17-fakultaet-loesung.visustruct":uB,"../../lessons/diagramme/pt/l17-java-brief-loesung.visustruct":mB,"../../lessons/diagramme/pt/l17-java-brief-start.visustruct":cB,"../../lessons/diagramme/pt/l17-java-fehler-loesung.visustruct":dB,"../../lessons/diagramme/pt/l17-java-fehler-start.visustruct":hB,"../../lessons/diagramme/pt/l17-java-laeuft-nicht-loesung.visustruct":gB,"../../lessons/diagramme/pt/l17-java-laeuft-nicht-start.visustruct":pB,"../../lessons/diagramme/pt/l17-java-passwort-loesung.visustruct":fB,"../../lessons/diagramme/pt/l17-ticket-loesung.visustruct":bB,"../../lessons/diagramme/pt/l18-beispiel.visustruct":xB,"../../lessons/diagramme/pt/l18-java-fehler-loesung.visustruct":vB,"../../lessons/diagramme/pt/l18-java-fehler-start.visustruct":yB,"../../lessons/diagramme/pt/l18-java-kasse-loesung.visustruct":wB,"../../lessons/diagramme/pt/l18-js-loesung.visustruct":zB,"../../lessons/diagramme/pt/l18-python-loesung.visustruct":IB,"../../lessons/diagramme/pt/l19-java-fehler-loesung.visustruct":kB,"../../lessons/diagramme/pt/l19-java-fehler-start.visustruct":SB,"../../lessons/diagramme/pt/l19-java-laeuft-nicht-loesung.visustruct":TB,"../../lessons/diagramme/pt/l19-java-laeuft-nicht-start.visustruct":_B,"../../lessons/diagramme/pt/l19-java-zaehlen-loesung.visustruct":jB,"../../lessons/diagramme/pt/l2-ausgabe.visustruct":AB,"../../lessons/diagramme/pt/l2-hallo-loesung.visustruct":CB,"../../lessons/diagramme/pt/l2-zwei-zeilen-loesung.visustruct":DB,"../../lessons/diagramme/pt/l23-java-ergaenzen-loesung.visustruct":PB,"../../lessons/diagramme/pt/l23-java-ergaenzen-start.visustruct":BB,"../../lessons/diagramme/pt/l23-java-nummern-loesung.visustruct":OB,"../../lessons/diagramme/pt/l23-java-nummern-start.visustruct":MB,"../../lessons/diagramme/pt/l24-java-fuchs-loesung.visustruct":ZB,"../../lessons/diagramme/pt/l24-java-fuchs-start.visustruct":LB,"../../lessons/diagramme/pt/l24-java-laengster-loesung.visustruct":WB,"../../lessons/diagramme/pt/l24-java-laengster-start.visustruct":EB,"../../lessons/diagramme/pt/l25-java-beste-loesung.visustruct":NB,"../../lessons/diagramme/pt/l25-java-beste-start.visustruct":FB,"../../lessons/diagramme/pt/l25-java-schnitt-loesung.visustruct":RB,"../../lessons/diagramme/pt/l25-java-schnitt-start.visustruct":JB,"../../lessons/diagramme/pt/l26-java-namen-loesung.visustruct":GB,"../../lessons/diagramme/pt/l26-java-namen-start.visustruct":HB,"../../lessons/diagramme/pt/l26-java-schreiben-loesung.visustruct":VB,"../../lessons/diagramme/pt/l26-java-schreiben-start.visustruct":qB,"../../lessons/diagramme/pt/l27-java-json-loesung.visustruct":QB,"../../lessons/diagramme/pt/l27-java-json-start.visustruct":UB,"../../lessons/diagramme/pt/l27-java-saetze-loesung.visustruct":YB,"../../lessons/diagramme/pt/l27-java-saetze-start.visustruct":$B,"../../lessons/diagramme/pt/sim-kino-loesung.visustruct":KB,"../../lessons/diagramme/pt/sim-kino-start.visustruct":XB,"../../lessons/diagramme/pt/sim-tausch-loesung.visustruct":eO,"../../lessons/diagramme/pt/sim-tausch-start.visustruct":tO,"../../lessons/diagramme/pt/sim-tausch.visustruct":nO,"../../lessons/diagramme/pt/ss-absteigend-loesung.visustruct":iO,"../../lessons/diagramme/pt/ss-absteigend-start.visustruct":aO,"../../lessons/diagramme/pt/ss-binaere-suche.visustruct":sO,"../../lessons/diagramme/pt/ss-bubblesort.visustruct":rO,"../../lessons/diagramme/pt/ss-karte-suchen-loesung.visustruct":oO,"../../lessons/diagramme/pt/ss-lineare-suche.visustruct":lO,"../../lessons/diagramme/pt/uebergabe-bonus-loesung.visustruct":uO,"../../lessons/diagramme/pt/uebergabe-bonus-start.visustruct":mO,"../../lessons/diagramme/pt/uebergabe-bonus-unterprogramm-loesung.visustruct":cO,"../../lessons/diagramme/pt/uebergabe-haupt.visustruct":dO,"../../lessons/diagramme/pt/uebergabe-leeren.visustruct":hO,"../../lessons/diagramme/pt/uebergabe-verdopple.visustruct":gO,"../../lessons/diagramme/pt/zk-initialen-loesung.visustruct":pO,"../../lessons/diagramme/pt/zk-mehr.visustruct":fO,"../../lessons/diagramme/pt/zk-rueckwaerts-loesung.visustruct":bO,"../../lessons/diagramme/pt/zk-split.visustruct":xO,"../../lessons/diagramme/pt/zk-woerter-loesung.visustruct":vO,"../../lessons/diagramme/pt/zk-zaehlen.visustruct":yO,"../../lessons/diagramme/pt/zk-zeichen.visustruct":wO,"../../lessons/diagramme/sim-kino-loesung.visustruct":zO,"../../lessons/diagramme/sim-kino-start.visustruct":IO,"../../lessons/diagramme/sim-tausch-loesung.visustruct":kO,"../../lessons/diagramme/sim-tausch-start.visustruct":SO,"../../lessons/diagramme/sim-tausch.visustruct":TO,"../../lessons/diagramme/ss-absteigend-loesung.visustruct":_O,"../../lessons/diagramme/ss-absteigend-start.visustruct":jO,"../../lessons/diagramme/ss-binaere-suche.visustruct":AO,"../../lessons/diagramme/ss-bubblesort.visustruct":CO,"../../lessons/diagramme/ss-karte-suchen-loesung.visustruct":DO,"../../lessons/diagramme/ss-lineare-suche.visustruct":PO,"../../lessons/diagramme/uebergabe-bonus-loesung.visustruct":BO,"../../lessons/diagramme/uebergabe-bonus-start.visustruct":OO,"../../lessons/diagramme/uebergabe-bonus-unterprogramm-loesung.visustruct":MO,"../../lessons/diagramme/uebergabe-haupt.visustruct":ZO,"../../lessons/diagramme/uebergabe-leeren.visustruct":LO,"../../lessons/diagramme/uebergabe-verdopple.visustruct":WO,"../../lessons/diagramme/vb-abstand-anzeigen-loesung.visustruct":EO,"../../lessons/diagramme/vb-abstand-halten-loesung.visustruct":NO,"../../lessons/diagramme/vb-alarmanlage-loesung.visustruct":FO,"../../lessons/diagramme/vb-ampel-loesung.visustruct":RO,"../../lessons/diagramme/vb-ampel-zustand-loesung.visustruct":JO,"../../lessons/diagramme/vb-ausgang-loesung.visustruct":GO,"../../lessons/diagramme/vb-begruessung-loesung.visustruct":HO,"../../lessons/diagramme/vb-binaer-zaehlen-loesung.visustruct":VO,"../../lessons/diagramme/vb-bis-rot-loesung.visustruct":qO,"../../lessons/diagramme/vb-bis-wand-loesung.visustruct":QO,"../../lessons/diagramme/vb-bis-ziel-loesung.visustruct":UO,"../../lessons/diagramme/vb-buchstaben-loesung.visustruct":YO,"../../lessons/diagramme/vb-do-while-loesung.visustruct":$O,"../../lessons/diagramme/vb-drei-lichter-loesung.visustruct":KO,"../../lessons/diagramme/vb-dreieck-loesung.visustruct":XO,"../../lessons/diagramme/vb-einparken-loesung.visustruct":eM,"../../lessons/diagramme/vb-erster-plan-loesung.visustruct":tM,"../../lessons/diagramme/vb-farben-loesung.visustruct":nM,"../../lessons/diagramme/vb-farbweiche-loesung.visustruct":iM,"../../lessons/diagramme/vb-fehler-04-sensoren-start.visustruct":aM,"../../lessons/diagramme/vb-fehler-05-bis-zur-wand-start.visustruct":sM,"../../lessons/diagramme/vb-fehler-05-erst-fahren-dann-pruefen-start.visustruct":rM,"../../lessons/diagramme/vb-fehler-05-zaehlen-und-summieren-start.visustruct":oM,"../../lessons/diagramme/vb-fehler-06-abstand-start.visustruct":lM,"../../lessons/diagramme/vb-fehler-06-konstanten-final-start.visustruct":uM,"../../lessons/diagramme/vb-fehler-06-nah-mittel-weit-start.visustruct":mM,"../../lessons/diagramme/vb-fehler-07-linie-start.visustruct":cM,"../../lessons/diagramme/vb-fehler-07-und-oder-start.visustruct":dM,"../../lessons/diagramme/vb-fehler-08-farben-start.visustruct":hM,"../../lessons/diagramme/vb-fehler-08-groesster-wert-start.visustruct":gM,"../../lessons/diagramme/vb-fehler-09-fallauswahl-mbot2-start.visustruct":pM,"../../lessons/diagramme/vb-fehler-10-tasten-joystick-start.visustruct":fM,"../../lessons/diagramme/vb-fehler-10-unterbrechen-mit-break-start.visustruct":bM,"../../lessons/diagramme/vb-fehler-11-licht-start.visustruct":xM,"../../lessons/diagramme/vb-fehler-11-merker-boolean-start.visustruct":vM,"../../lessons/diagramme/vb-fehler-12-lautstaerke-start.visustruct":yM,"../../lessons/diagramme/vb-fehler-13-neigung-start.visustruct":wM,"../../lessons/diagramme/vb-fehler-14-leds-start.visustruct":zM,"../../lessons/diagramme/vb-fehler-15-einzelne-leds-start.visustruct":IM,"../../lessons/diagramme/vb-fehler-16-lautsprecher-start.visustruct":kM,"../../lessons/diagramme/vb-fehler-17-arrays-melodie-start.visustruct":SM,"../../lessons/diagramme/vb-fehler-18-bildschirm-start.visustruct":TM,"../../lessons/diagramme/vb-fehler-19-zeichenketten-start.visustruct":_M,"../../lessons/diagramme/vb-fehler-20-motoren-start.visustruct":jM,"../../lessons/diagramme/vb-fehler-21-stoppuhr-akku-start.visustruct":AM,"../../lessons/diagramme/vb-fehler-21-zustaende-start.visustruct":CM,"../../lessons/diagramme/vb-fehler-22-eigene-methoden-start.visustruct":DM,"../../lessons/diagramme/vb-gas-bis-wand-loesung.visustruct":PM,"../../lessons/diagramme/vb-gerade-loesung.visustruct":BM,"../../lessons/diagramme/vb-hindernis-loesung.visustruct":OM,"../../lessons/diagramme/vb-java-akku-loesung.visustruct":MM,"../../lessons/diagramme/vb-java-ampel-text-loesung.visustruct":ZM,"../../lessons/diagramme/vb-java-blau-gruen-loesung.visustruct":LM,"../../lessons/diagramme/vb-java-blinken-loesung.visustruct":WM,"../../lessons/diagramme/vb-java-countdown-loesung.visustruct":EM,"../../lessons/diagramme/vb-java-hoeher-loesung.visustruct":NM,"../../lessons/diagramme/vb-java-joystick-loesung.visustruct":FM,"../../lessons/diagramme/vb-java-klatsch-merker-loesung.visustruct":RM,"../../lessons/diagramme/vb-java-konstante-seite-loesung.visustruct":JM,"../../lessons/diagramme/vb-java-laermampel-loesung.visustruct":GM,"../../lessons/diagramme/vb-java-lauflicht-loesung.visustruct":HM,"../../lessons/diagramme/vb-java-linienfolger-loesung.visustruct":VM,"../../lessons/diagramme/vb-java-nachtlicht-ton-loesung.visustruct":qM,"../../lessons/diagramme/vb-java-rand-loesung.visustruct":QM,"../../lessons/diagramme/vb-java-rechteck-loesung.visustruct":UM,"../../lessons/diagramme/vb-java-rechteck-umdrehungen-loesung.visustruct":YM,"../../lessons/diagramme/vb-java-richtung-loesung.visustruct":$M,"../../lessons/diagramme/vb-java-schritte-zaehlen-loesung.visustruct":KM,"../../lessons/diagramme/vb-java-sicher-fahren-loesung.visustruct":XM,"../../lessons/diagramme/vb-java-spirale-strecke-loesung.visustruct":eZ,"../../lessons/diagramme/vb-java-tageszeit-loesung.visustruct":tZ,"../../lessons/diagramme/vb-java-taste-stopp-loesung.visustruct":nZ,"../../lessons/diagramme/vb-java-textlaenge-loesung.visustruct":iZ,"../../lessons/diagramme/vb-java-wand-piep-loesung.visustruct":aZ,"../../lessons/diagramme/vb-java-wasserwaage-loesung.visustruct":sZ,"../../lessons/diagramme/vb-klatschen-loesung.visustruct":rZ,"../../lessons/diagramme/vb-knight-rider-loesung.visustruct":oZ,"../../lessons/diagramme/vb-konstante-wand-loesung.visustruct":lZ,"../../lessons/diagramme/vb-l00-bausteine-loesung.visustruct":uZ,"../../lessons/diagramme/vb-l00-sequenz-loesung.visustruct":mZ,"../../lessons/diagramme/vb-l03-wachsend-loesung.visustruct":cZ,"../../lessons/diagramme/vb-l06k-mit.visustruct":dZ,"../../lessons/diagramme/vb-l06k-ohne.visustruct":hZ,"../../lessons/diagramme/vb-l06n-einparkhilfe.visustruct":gZ,"../../lessons/diagramme/vb-l21z-ausweichen.visustruct":pZ,"../../lessons/diagramme/vb-labyrinth-loesung.visustruct":fZ,"../../lessons/diagramme/vb-laufschrift-loesung.visustruct":bZ,"../../lessons/diagramme/vb-linienfolger-stopp-loesung.visustruct":xZ,"../../lessons/diagramme/vb-linienmuster-loesung.visustruct":vZ,"../../lessons/diagramme/vb-meister-platz-loesung.visustruct":yZ,"../../lessons/diagramme/vb-melodie-loesung.visustruct":wZ,"../../lessons/diagramme/vb-messreihe-loesung.visustruct":zZ,"../../lessons/diagramme/vb-morsen-loesung.visustruct":IZ,"../../lessons/diagramme/vb-nachtlicht-loesung.visustruct":kZ,"../../lessons/diagramme/vb-nachtwaechter-loesung.visustruct":SZ,"../../lessons/diagramme/vb-notbremse-loesung.visustruct":TZ,"../../lessons/diagramme/vb-oder-loesung.visustruct":_Z,"../../lessons/diagramme/vb-quadrat-loesung.visustruct":jZ,"../../lessons/diagramme/vb-quadrat-methode-loesung.visustruct":AZ,"../../lessons/diagramme/vb-quadrat-schleife-loesung.visustruct":CZ,"../../lessons/diagramme/vb-quadrat-unterprogramm-loesung.visustruct":DZ,"../../lessons/diagramme/vb-quadrat-verschachtelt-loesung.visustruct":PZ,"../../lessons/diagramme/vb-rand-loesung.visustruct":BZ,"../../lessons/diagramme/vb-schraeglage-loesung.visustruct":OZ,"../../lessons/diagramme/vb-schritte-welt-loesung.visustruct":MZ,"../../lessons/diagramme/vb-slalom-loesung.visustruct":ZZ,"../../lessons/diagramme/vb-spirale-falsch-loesung.visustruct":LZ,"../../lessons/diagramme/vb-spirale-falsch-start.visustruct":WZ,"../../lessons/diagramme/vb-spirale-loesung.visustruct":EZ,"../../lessons/diagramme/vb-start-a-loesung.visustruct":NZ,"../../lessons/diagramme/vb-startsignal-loesung.visustruct":FZ,"../../lessons/diagramme/vb-strecke-anzeigen-loesung.visustruct":RZ,"../../lessons/diagramme/vb-tempo-abstand-loesung.visustruct":JZ,"../../lessons/diagramme/vb-tonleiter-loesung.visustruct":GZ,"../../lessons/diagramme/vb-treppe-loesung.visustruct":HZ,"../../lessons/diagramme/vb-tunnel-loesung.visustruct":VZ,"../../lessons/diagramme/vb-ueberladung-umdrehung-loesung.visustruct":qZ,"../../lessons/diagramme/vb-und-loesung.visustruct":QZ,"../../lessons/diagramme/vb-variable-seite-loesung.visustruct":UZ,"../../lessons/diagramme/vb-vier-quadrate-loesung.visustruct":YZ,"../../lessons/diagramme/vb-wald-loesung.visustruct":$Z,"../../lessons/diagramme/vb-wand-vorn-loesung.visustruct":KZ,"../../lessons/diagramme/vb-wurde-es-dunkel-loesung.visustruct":XZ,"../../lessons/diagramme/vb-zentimeter-loesung.visustruct":eL,"../../lessons/diagramme/vb-zentimeter-unterprogramm-loesung.visustruct":tL,"../../lessons/diagramme/vb-zwei-sekunden-loesung.visustruct":nL,"../../lessons/diagramme/zk-initialen-loesung.visustruct":iL,"../../lessons/diagramme/zk-mehr.visustruct":aL,"../../lessons/diagramme/zk-rueckwaerts-loesung.visustruct":sL,"../../lessons/diagramme/zk-split.visustruct":rL,"../../lessons/diagramme/zk-woerter-loesung.visustruct":oL,"../../lessons/diagramme/zk-zaehlen.visustruct":lL,"../../lessons/diagramme/zk-zeichen.visustruct":uL}),CN=Object.assign({"../../lessons/welten/ausgang-1.txt":mL,"../../lessons/welten/ausgang-2.txt":cL,"../../lessons/welten/ecke.txt":dL,"../../lessons/welten/farbe-1.txt":hL,"../../lessons/welten/farbe-2.txt":gL,"../../lessons/welten/farbe-3.txt":pL,"../../lessons/welten/farbe-4.txt":fL,"../../lessons/welten/hindernis-1.txt":bL,"../../lessons/welten/hindernis-2.txt":xL,"../../lessons/welten/labyrinth-1.txt":vL,"../../lessons/welten/labyrinth-2.txt":yL,"../../lessons/welten/linie-1.txt":wL,"../../lessons/welten/linie-2.txt":zL,"../../lessons/welten/linie-rot-1.txt":IL,"../../lessons/welten/linie-rot-2.txt":kL,"../../lessons/welten/parken-1.txt":SL,"../../lessons/welten/parken-2.txt":TL,"../../lessons/welten/platz-1.txt":_L,"../../lessons/welten/platz-2.txt":jL,"../../lessons/welten/rand-1.txt":AL,"../../lessons/welten/rand-2.txt":CL,"../../lessons/welten/slalom.txt":DL,"../../lessons/welten/tunnel-1.txt":PL,"../../lessons/welten/tunnel-2.txt":BL,"../../lessons/welten/wald-1.txt":OL,"../../lessons/welten/wald-2.txt":ML,"../../lessons/welten/wand-frei.txt":ZL,"../../lessons/welten/wand-kurz.txt":LL,"../../lessons/welten/wand-lang.txt":WL,"../../lessons/welten/wand-mittel.txt":EL,"../../lessons/welten/wand-nah.txt":NL,"../../lessons/welten/zeit-1.txt":FL,"../../lessons/welten/ziel-kurz.txt":RL,"../../lessons/welten/ziel-lang.txt":JL}),DN=Object.assign({"../../lessons/bilder/ada-lovelace.jpg":GL,"../../lessons/bilder/aufgabe-mehrwertsteuer.svg":HL,"../../lessons/bilder/ben-shneiderman.jpg":VL,"../../lessons/bilder/caesar-ascii.svg":qL,"../../lessons/bilder/caesar-scheibe.svg":QL,"../../lessons/bilder/caesar-verschiebung.svg":UL,"../../lessons/bilder/en/aufgabe-mehrwertsteuer.svg":YL,"../../lessons/bilder/en/kino-saal.svg":$L,"../../lessons/bilder/en/kino-schleifen.svg":KL,"../../lessons/bilder/en/l01-pap.svg":XL,"../../lessons/bilder/en/l02-einfuegen.svg":eW,"../../lessons/bilder/en/l03-lochkarte-beschriftet.svg":tW,"../../lessons/bilder/en/l03-lochkarte.svg":nW,"../../lessons/bilder/en/l04-camelcase.svg":iW,"../../lessons/bilder/en/l04-variable.svg":aW,"../../lessons/bilder/en/l04-zuweisung.svg":sW,"../../lessons/bilder/en/l05-tauschen.svg":rW,"../../lessons/bilder/en/l08-zahlenstrahl.svg":oW,"../../lessons/bilder/en/l10-kopfgesteuert.svg":lW,"../../lessons/bilder/en/l11-vergleich.svg":uW,"../../lessons/bilder/en/l12-for-ablauf.svg":mW,"../../lessons/bilder/en/l12-while-zu-for.svg":cW,"../../lessons/bilder/en/l13-verschachtelt-tabelle.svg":dW,"../../lessons/bilder/en/l14-array.svg":hW,"../../lessons/bilder/en/l20-cpp.svg":gW,"../../lessons/bilder/en/l20-jvm.svg":pW,"../../lessons/bilder/en/mvc-klick.svg":fW,"../../lessons/bilder/en/ss-binaere-suche.svg":bW,"../../lessons/bilder/en/ss-bubblesort.svg":xW,"../../lessons/bilder/en/ss-lineare-suche.svg":vW,"../../lessons/bilder/en/ss-vergleiche.svg":yW,"../../lessons/bilder/en/uebergabe.svg":wW,"../../lessons/bilder/en/zk-zeichen.svg":zW,"../../lessons/bilder/grace-hopper.jpg":IW,"../../lessons/bilder/hedy-lamarr.jpg":kW,"../../lessons/bilder/ike-nassi.jpg":SW,"../../lessons/bilder/katherine-johnson.jpg":TW,"../../lessons/bilder/kino-saal.svg":_W,"../../lessons/bilder/kino-schleifen.svg":jW,"../../lessons/bilder/l01-pap.svg":AW,"../../lessons/bilder/l02-einfuegen.svg":CW,"../../lessons/bilder/l03-lochkarte-beschriftet.svg":DW,"../../lessons/bilder/l03-lochkarte.svg":PW,"../../lessons/bilder/l03-zuse-lochstreifen.svg":BW,"../../lessons/bilder/l04-camelcase.svg":OW,"../../lessons/bilder/l04-variable.svg":MW,"../../lessons/bilder/l04-zuweisung.svg":ZW,"../../lessons/bilder/l05-tauschen.svg":LW,"../../lessons/bilder/l07-schreibtischtest-de.svg":WW,"../../lessons/bilder/l07-schreibtischtest-en.svg":EW,"../../lessons/bilder/l07-schreibtischtest-pt.svg":NW,"../../lessons/bilder/l08-zahlenstrahl.svg":FW,"../../lessons/bilder/l09-wahrheitstabelle.svg":RW,"../../lessons/bilder/l10-kopfgesteuert.svg":JW,"../../lessons/bilder/l11-vergleich.svg":GW,"../../lessons/bilder/l12-for-ablauf.svg":HW,"../../lessons/bilder/l12-while-zu-for.svg":VW,"../../lessons/bilder/l13-verschachtelt-tabelle.svg":qW,"../../lessons/bilder/l14-array.svg":QW,"../../lessons/bilder/l20-cpp.svg":UW,"../../lessons/bilder/l20-jvm.svg":YW,"../../lessons/bilder/margaret-hamilton.jpg":$W,"../../lessons/bilder/mvc-klick.svg":KW,"../../lessons/bilder/pt/aufgabe-mehrwertsteuer.svg":XW,"../../lessons/bilder/pt/kino-saal.svg":eE,"../../lessons/bilder/pt/kino-schleifen.svg":tE,"../../lessons/bilder/pt/l01-pap.svg":nE,"../../lessons/bilder/pt/l02-einfuegen.svg":iE,"../../lessons/bilder/pt/l03-lochkarte-beschriftet.svg":aE,"../../lessons/bilder/pt/l03-lochkarte.svg":sE,"../../lessons/bilder/pt/l04-camelcase.svg":rE,"../../lessons/bilder/pt/l04-variable.svg":oE,"../../lessons/bilder/pt/l04-zuweisung.svg":lE,"../../lessons/bilder/pt/l05-tauschen.svg":uE,"../../lessons/bilder/pt/l08-zahlenstrahl.svg":mE,"../../lessons/bilder/pt/l10-kopfgesteuert.svg":cE,"../../lessons/bilder/pt/l11-vergleich.svg":dE,"../../lessons/bilder/pt/l12-for-ablauf.svg":hE,"../../lessons/bilder/pt/l12-while-zu-for.svg":gE,"../../lessons/bilder/pt/l13-verschachtelt-tabelle.svg":pE,"../../lessons/bilder/pt/l14-array.svg":fE,"../../lessons/bilder/pt/l20-cpp.svg":bE,"../../lessons/bilder/pt/l20-jvm.svg":xE,"../../lessons/bilder/pt/mvc-klick.svg":vE,"../../lessons/bilder/pt/schiffe-versenken.svg":yE,"../../lessons/bilder/pt/ss-binaere-suche.svg":wE,"../../lessons/bilder/pt/ss-bubblesort.svg":zE,"../../lessons/bilder/pt/ss-lineare-suche.svg":IE,"../../lessons/bilder/pt/ss-vergleiche.svg":kE,"../../lessons/bilder/pt/uebergabe.svg":SE,"../../lessons/bilder/pt/zk-zeichen.svg":TE,"../../lessons/bilder/schiffe-versenken.svg":_E,"../../lessons/bilder/ss-binaere-suche.svg":jE,"../../lessons/bilder/ss-bubblesort.svg":AE,"../../lessons/bilder/ss-lineare-suche.svg":CE,"../../lessons/bilder/ss-vergleiche.svg":DE,"../../lessons/bilder/uebergabe.svg":PE,"../../lessons/bilder/zk-zeichen.svg":BE}),Zg=i=>i.replace(/^.*\//,"");function ti(i,e,t){const n=s=>new Map(Object.entries(i).filter(([r])=>{var o;return((o=e.exec(r))==null?void 0:o[1])===s}).map(([r,o])=>[Zg(r),o]));return[...new Map([...n("en"),...t==="en"?[]:n(t)])]}function bm(i){return i==="de"?"de":i==="pt-PT"?"pt":"en"}let D1="en",zt=[],Dn=[],Xa="",es=[],Ps="off";function xm(i){i!==Ps&&(Ps=i,zt=[],Bs(D1))}function Bs(i){var s,r,o;if(sb(i),i===D1&&zt.length>0)return;D1=i;const e=ti(TN,/\/lessons\/([^/]+)\/[^/]+\.md$/,i),t=(l,u)=>l.filter(([m])=>/^\d+/.test(m)).map(([m,c])=>kN(ym(c,u),`${i}/${m}`)).sort((m,c)=>m.number-c.number),n=(l,u,m)=>l.map(([c,d])=>{const h=SN(ym(d,m),`${i}/${u}${c}`);return m&&h.after!==void 0?{...h,after:m.get(h.after)??h.after}:h}),a=ti(_N,/\/lessons\/([^/]+)\/aufgaben\/[^/]+\.md$/,i);if(Ps==="on"){const l=ti(fm,/\/lessons\/([^/]+)\/visubot\/[^/]+\.md$/,i),u=vm(l);zt=t(l,u.renumber).map(c=>({...c,number:u.number.get(c.id),robot:!0})).sort((c,d)=>c.number-d.number);const m=ti(jN,/\/lessons\/([^/]+)\/visubot\/aufgaben\/[^/]+\.md$/,i);Dn=n(m,"visubot/aufgaben/",u.renumber).map(c=>({...c,robot:!0}))}else{const l=e.filter(([m])=>/^\d+/.test(m)),u=vm(l);zt=t(l,u.renumber).map(m=>({...m,number:u.number.get(m.id)})).sort((m,c)=>m.number-c.number),Dn=n(a,"aufgaben/",u.renumber)}Dn.sort((l,u)=>(l.after??0)-(u.after??0)||l.level-u.level||l.title.localeCompare(u.title,i));for(const l of[...zt.flatMap(u=>u.steps.flatMap(m=>m.blocks)),...Dn.flatMap(u=>u.blocks)])l.kind==="textFile"&&pb(l.name,l.content);if(Xa=((s=e.find(([l])=>l==="nachschlagen.md"))==null?void 0:s[1])??"",Ps!=="off"){const l=(r=ti(fm,/\/lessons\/([^/]+)\/visubot\/[^/]+\.md$/,i).find(([u])=>u==="nachschlagen.md"))==null?void 0:r[1];l&&(Xa=`${Xa.trimEnd()} -${l}`)}es=AW(((o=e.find(([l])=>l==="begriffe.md"))==null?void 0:o[1])??"")}function vm(i){const e=i.map(([a])=>a).filter(a=>/^\d+/.test(a)).sort((a,s)=>Number(/^\d+/.exec(a)[0])-Number(/^\d+/.exec(s)[0])||a.localeCompare(s)),t=new Map,n=new Map;return e.forEach((a,s)=>{t.set(a.replace(/\.md$/,""),s+1);const r=Number(/^\d+/.exec(a)[0]);n.has(r)||n.set(r,s+1)}),{number:t,renumber:n}}function ym(i,e){return e?i.replace(/\b(Lektion(?:en)?|Lessons?|Li[cç](?:ão|ões))(\s+\d+(?:\s*(?:,|bis|und|and|to|a|e|–|-)\s*\d+)*)/gi,(t,n,a)=>n+a.replace(/\d+/g,s=>String(e.get(Number(s))??s))):i}Bs("en");function Lg(i,e){return P1==="de"?i.get(e)??i.get(`en/${e}`):(P1==="en"?void 0:i.get(`${P1}/${e}`))??i.get(`en/${e}`)??i.get(e)}const Wg=(i,e)=>i.slice(i.indexOf(e)+e.length),jE=new Map(Object.entries(SE).map(([i,e])=>[Wg(i,"/diagramme/"),e]));function di(i){const e=Lg(jE,i);return e===void 0?void 0:n0(e)}const CE=new Map(Object.entries(_E).map(([i,e])=>[Wg(i,"/bilder/"),e]));function va(i){return Lg(CE,i)}const AE=new Map(Object.entries(TE).map(([i,e])=>[Zg(i).replace(/\.txt$/,""),e])),wm=new Map;function ts(i){const e=AE.get(i);if(e===void 0)return;let t=wm.get(i);return t||wm.set(i,t=gg(e)),t}const Eg=i=>i.replace(/&/g,"&").replace(//g,">").replace(/"/g,""");function je(i){const e=[];let t=Eg(i).replace(/`([^`]+)`/g,(n,a)=>(e.push(a),`\0${e.length-1}\0`));return t=t.replace(/\*\*(.+?)\*\*/g,"$1").replace(/(^|[^*])\*([^*\s][^*]*?)\*/g,"$1$2").replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(n,a,s)=>{const r=/^\?(visustruct|visubot)(&lektion=[\w-]+)?$/.test(s),o=r||/^(https?:|mailto:|#|\.{0,2}\/)/.test(s)?s:"#",l=r||/^https?:/.test(o)?' target="_blank" rel="noopener noreferrer"':"";return`${a}`}).replace(/\[([^\]]+)\]\{\.(blau|orange|gruen|gelb|rosa)\}/g,'$1').replace(/\[([^\]]+)\]\{(?:teil|part)=([\w,]+)\}/g,'$1'),t.replace(/\u0000(\d+)\u0000/g,(n,a)=>`${e[Number(a)]}`)}function jn(i){const e=[],t=i.replace(/\r\n/g,` +${l}`)}es=OE(((o=e.find(([l])=>l==="begriffe.md"))==null?void 0:o[1])??"")}function vm(i){const e=i.map(([a])=>a).filter(a=>/^\d+/.test(a)).sort((a,s)=>Number(/^\d+/.exec(a)[0])-Number(/^\d+/.exec(s)[0])||a.localeCompare(s)),t=new Map,n=new Map;return e.forEach((a,s)=>{t.set(a.replace(/\.md$/,""),s+1);const r=Number(/^\d+/.exec(a)[0]);n.has(r)||n.set(r,s+1)}),{number:t,renumber:n}}function ym(i,e){return e?i.replace(/\b(Lektion(?:en)?|Lessons?|Li[cç](?:ão|ões))(\s+\d+(?:\s*(?:,|bis|und|and|to|a|e|–|-)\s*\d+)*)/gi,(t,n,a)=>n+a.replace(/\d+/g,s=>String(e.get(Number(s))??s))):i}Bs("en");function Lg(i,e){return D1==="de"?i.get(e)??i.get(`en/${e}`):(D1==="en"?void 0:i.get(`${D1}/${e}`))??i.get(`en/${e}`)??i.get(e)}const Wg=(i,e)=>i.slice(i.indexOf(e)+e.length),PN=new Map(Object.entries(AN).map(([i,e])=>[Wg(i,"/diagramme/"),e]));function di(i){const e=Lg(PN,i);return e===void 0?void 0:n0(e)}const BN=new Map(Object.entries(DN).map(([i,e])=>[Wg(i,"/bilder/"),e]));function va(i){return Lg(BN,i)}const ON=new Map(Object.entries(CN).map(([i,e])=>[Zg(i).replace(/\.txt$/,""),e])),wm=new Map;function ts(i){const e=ON.get(i);if(e===void 0)return;let t=wm.get(i);return t||wm.set(i,t=gg(e)),t}const Eg=i=>i.replace(/&/g,"&").replace(//g,">").replace(/"/g,""");function je(i){const e=[];let t=Eg(i).replace(/`([^`]+)`/g,(n,a)=>(e.push(a),`\0${e.length-1}\0`));return t=t.replace(/\*\*(.+?)\*\*/g,"$1").replace(/(^|[^*])\*([^*\s][^*]*?)\*/g,"$1$2").replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,(n,a,s)=>{const r=/^\?(visustruct|visubot)(&lektion=[\w-]+)?$/.test(s),o=r||/^(https?:|mailto:|#|\.{0,2}\/)/.test(s)?s:"#",l=r||/^https?:/.test(o)?' target="_blank" rel="noopener noreferrer"':"";return`${a}`}).replace(/\[([^\]]+)\]\{\.(blau|orange|gruen|gelb|rosa)\}/g,'$1').replace(/\[([^\]]+)\]\{(?:teil|part)=([\w,]+)\}/g,'$1'),t.replace(/\u0000(\d+)\u0000/g,(n,a)=>`${e[Number(a)]}`)}function jn(i){const e=[],t=i.replace(/\r\n/g,` `).split(` `);let n=0;for(;n${Eg(c.join(` `))}`);continue}const s=/^(#{2,4})\s+(.*)$/.exec(a);if(s){const o=s[1].length,l=/\s*\{\.([a-z][a-z-]*)\}$/.exec(s[2]),u=l?s[2].slice(0,l.index):s[2];e.push(`${je(u)}`),n++;continue}if(/^\s*([-*]|\d+\.)\s+/.test(a)){const o=/^\s*\d+\./.test(a),l=[];for(;n${je(u)}`)}e.push(o?`
    ${l.join("")}
`:`
    ${l.join("")}
`);continue}if(a.startsWith("|")&&/^\|?[\s:|-]*-{3,}[\s:|-]*$/.test(t[n+1]??"")){const o=m=>m.trim().replace(/^\|/,"").replace(/\|$/,"").split("|").map(c=>je(c.trim())),l=o(a);n+=2;const u=[];for(;n${l.map(m=>``).join("")}${u.map(m=>`${m.map(c=>``).join("")}`).join("")}
${m}
${c}
`);continue}if(a.startsWith(">")){const o=[];for(;n");)o.push(t[n++].replace(/^>\s?/,""));e.push(``);continue}const r=[];for(;n|\||\s*([-*]|\d+\.)\s+)/.test(t[n]);)r.push(t[n++].trim());e.push(`

${je(r.join(" "))}

`)}return e.join(` -`)}const x1=""+new URL("ludwig-Cus1i402.webp",import.meta.url).href,el="f4ecc8e489ae7865308288c7d0fa313333cf2be3ff529b23bc214bee010310e0",k0="visustruct.learn.teacher";let S0=!1;function zm(){if(S0)return!0;try{return localStorage.getItem(k0)===el}catch{return!1}}async function PE(i){const e=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(i));return[...new Uint8Array(e)].map(t=>t.toString(16).padStart(2,"0")).join("")}async function DE(i){let e=!1;try{e=await PE(i.trim())===el}catch{return!1}if(e){S0=!0;try{localStorage.setItem(k0,el)}catch{}}return e}function BE(){S0=!1;try{localStorage.removeItem(k0)}catch{}}function Ng(i,e,t=!1){const n=document.createElement("figure");n.className=t?"learn-file written":"learn-file";const a=document.createElement("figcaption"),s=document.createElement("span");s.className="learn-file-icon",s.setAttribute("aria-hidden","true"),s.textContent="📄",a.append(s,t?p("web_sim_written_file_fmt",i):i);const r=document.createElement("pre");return r.className="learn-file-text",r.dir="ltr",e.replace(/\n$/,"").split(` +`)}const x1=""+new URL("ludwig-Cus1i402.webp",import.meta.url).href,el="f4ecc8e489ae7865308288c7d0fa313333cf2be3ff529b23bc214bee010310e0",k0="visustruct.learn.teacher";let S0=!1;function zm(){if(S0)return!0;try{return localStorage.getItem(k0)===el}catch{return!1}}async function MN(i){const e=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(i));return[...new Uint8Array(e)].map(t=>t.toString(16).padStart(2,"0")).join("")}async function ZN(i){let e=!1;try{e=await MN(i.trim())===el}catch{return!1}if(e){S0=!0;try{localStorage.setItem(k0,el)}catch{}}return e}function LN(){S0=!1;try{localStorage.removeItem(k0)}catch{}}function Ng(i,e,t=!1){const n=document.createElement("figure");n.className=t?"learn-file written":"learn-file";const a=document.createElement("figcaption"),s=document.createElement("span");s.className="learn-file-icon",s.setAttribute("aria-hidden","true"),s.textContent="📄",a.append(s,t?p("web_sim_written_file_fmt",i):i);const r=document.createElement("pre");return r.className="learn-file-text",r.dir="ltr",e.replace(/\n$/,"").split(` `).forEach((l,u)=>{const m=document.createElement("span");m.className="ln",m.textContent=String(u+1),r.append(m,l+` -`)}),n.append(a,r),n}function Fg(i){return[...i].map(([e,t])=>Ng(e,t,!0))}function i1(i){switch(i.kind){case"finished":return p("sim_notice_finished");case"infiniteLoopWithoutBody":return p("sim_notice_infinite_loop_empty");case"unsupportedStatement":return p("sim_notice_unsupported_statement_fmt",i.text);case"invalidExpression":return p("sim_notice_invalid_expression_fmt",i.text);case"unknownVariable":return i.similar?p("web_sim_unknown_variable_case_fmt",i.text,i.similar):p("sim_notice_unknown_variable_fmt",i.text);case"divisionByZero":return p("sim_notice_division_by_zero");case"wholeNumberExpected":return p("sim_notice_whole_number_expected");case"numberExpected":return p("sim_notice_number_expected");case"booleanExpected":return p("sim_notice_boolean_expected");case"subprogramNotFound":return p("sim_notice_subprogram_not_found_fmt",i.text);case"callTooDeep":return p("sim_notice_call_too_deep");case"callArguments":return p("web_sim_call_arguments_fmt",i.text);case"missingReturn":return p("web_sim_missing_return_fmt",i.text);case"fileNotFound":return p("web_sim_file_not_found_fmt",i.text);case"endOfFile":return p("web_sim_end_of_file_fmt",i.text);case"nullValue":return p("web_sim_null_value_fmt",i.text);case"other":return i.text}}const Oe=i=>i.replace(/&/g,"&").replace(//g,">").replace(/"/g,"""),Im=["0.2","0.5","1.0","1.5","2.0"],OE=i=>Number(i).toLocaleString(o1()==="java"?"en":o1(),{minimumFractionDigits:1}),Nr="visustruct.simulation.stepDelay",km="visustruct.simulation.highlightMode";function Fr(i){try{return localStorage.getItem(i)}catch{return null}}function Sm(i,e){try{localStorage.setItem(i,e)}catch{}}class ME{constructor(e,t,n=()=>{},a=()=>{},s=()=>{}){y(this,"element");y(this,"engine");y(this,"isPlaying",!1);y(this,"playTimer");y(this,"wasPlayingBeforeInput",!1);y(this,"delay",Im.includes(Fr(Nr)??"")?Fr(Nr):"0.5");y(this,"highlightMode",Fr(km)==="nextToExecute"?"nextToExecute":"lastExecuted");y(this,"buttons");y(this,"inputSection");y(this,"trace");y(this,"variables");y(this,"output");y(this,"transcript",[]);y(this,"printed",0);y(this,"notice");y(this,"editButton");y(this,"robot");y(this,"liveBusy",!1);this.currentDocument=e,this.onHighlight=t,this.findSubprogram=n,this.onEdit=a,this.onTranscript=s,this.engine=new Bi(e(),n),this.element=document.createElement("aside"),this.element.className="simpanel",this.build()}setRobot(e){var t;this.robot!==e&&((t=this.robot)==null||t.element.remove(),this.robot=e,e&&(this.element.querySelector("section").after(e.element),e.onWorldChange=()=>this.restartEngine(),e.reset()))}showRobot(){var e;(e=this.robot)==null||e.show()}begin(){this.pause(),this.restartEngine(),this.showRobot()}end(){this.pause()}step(){var n,a,s;if((n=this.robot)!=null&&n.live){this.stepLive();return}if(!this.engine.canStep){this.pause();return}const e=this.isPlaying,t=this.engine.currentStepPath;(a=this.robot)==null||a.prepare(this.engine),this.engine.step(),(s=this.robot)==null||s.follow(this.engine.state.robotActions,e?Number(this.delay)*850:450),this.afterStep(e,t)}async stepLive(){if(this.liveBusy)return;if(!this.engine.canStep){this.pause();return}this.liveBusy=!0;const e=this.robot,t=this.isPlaying,n=this.engine.currentStepPath;try{await e.prepareLive(this.engine,ob(JSON.stringify(this.currentDocument()))),this.engine.step(),e.follow(this.engine.state.robotActions,450),await e.drive(this.engine.state.robotActions)}catch(a){e.liveFailed(a),this.isPlaying=!1}finally{this.liveBusy=!1}this.afterStep(t,n)}afterStep(e,t){this.collectOutput(),this.highlightMode==="nextToExecute"&&this.engine.canStep?this.onHighlight(this.engine.currentStepPath):this.onHighlight(t??this.engine.currentStepPath),this.engine.state.inputRequest&&e&&(this.wasPlayingBeforeInput=!0),this.engine.canStep||this.pause(),this.update()}reset(){this.pause(),this.restartEngine()}play(){if(this.isPlaying||!this.engine.canStep)return;this.isPlaying=!0;const e=async()=>{var t;this.playTimer=void 0,this.isPlaying&&((t=this.robot)!=null&&t.live?await this.stepLive():this.step(),this.isPlaying&&this.engine.canStep?this.playTimer=window.setTimeout(()=>void e(),Number(this.delay)*1e3):(this.isPlaying=!1,this.update()))};e()}pause(){this.playTimer!==void 0&&window.clearTimeout(this.playTimer),this.playTimer=void 0,this.isPlaying=!1,this.update()}submitInput(e){var s,r;const t=this.isPlaying||this.wasPlayingBeforeInput;this.pause();const n=((s=this.engine.state.inputRequest)==null?void 0:s.prompt)??"",a=(r=this.engine.state.inputRequest)==null?void 0:r.continuesLine;if(this.engine.provideInput(e.value),!this.engine.state.inputRequest){const o=this.transcript[this.transcript.length-1];a&&o&&o.typed===void 0?o.typed=e.value:this.transcript.push({text:n?`${n} `:"",typed:e.value}),e.value=""}this.onHighlight(this.engine.currentStepPath),t&&this.engine.canStep&&(this.wasPlayingBeforeInput=!1,this.play()),this.update()}restartEngine(){var e;this.engine=new Bi(this.currentDocument(),this.findSubprogram),this.transcript=[],this.printed=0,this.wasPlayingBeforeInput=!1,(e=this.robot)==null||e.reset(),this.onHighlight(this.engine.currentStepPath),this.update()}build(){this.element.innerHTML=` +`)}),n.append(a,r),n}function Fg(i){return[...i].map(([e,t])=>Ng(e,t,!0))}function i1(i){switch(i.kind){case"finished":return p("sim_notice_finished");case"infiniteLoopWithoutBody":return p("sim_notice_infinite_loop_empty");case"unsupportedStatement":return p("sim_notice_unsupported_statement_fmt",i.text);case"invalidExpression":return p("sim_notice_invalid_expression_fmt",i.text);case"unknownVariable":return i.similar?p("web_sim_unknown_variable_case_fmt",i.text,i.similar):p("sim_notice_unknown_variable_fmt",i.text);case"divisionByZero":return p("sim_notice_division_by_zero");case"wholeNumberExpected":return p("sim_notice_whole_number_expected");case"numberExpected":return p("sim_notice_number_expected");case"booleanExpected":return p("sim_notice_boolean_expected");case"subprogramNotFound":return p("sim_notice_subprogram_not_found_fmt",i.text);case"callTooDeep":return p("sim_notice_call_too_deep");case"callArguments":return p("web_sim_call_arguments_fmt",i.text);case"missingReturn":return p("web_sim_missing_return_fmt",i.text);case"fileNotFound":return p("web_sim_file_not_found_fmt",i.text);case"endOfFile":return p("web_sim_end_of_file_fmt",i.text);case"nullValue":return p("web_sim_null_value_fmt",i.text);case"other":return i.text}}const Oe=i=>i.replace(/&/g,"&").replace(//g,">").replace(/"/g,"""),Im=["0.2","0.5","1.0","1.5","2.0"],WN=i=>Number(i).toLocaleString(o1()==="java"?"en":o1(),{minimumFractionDigits:1}),Nr="visustruct.simulation.stepDelay",km="visustruct.simulation.highlightMode";function Fr(i){try{return localStorage.getItem(i)}catch{return null}}function Sm(i,e){try{localStorage.setItem(i,e)}catch{}}class EN{constructor(e,t,n=()=>{},a=()=>{},s=()=>{}){y(this,"element");y(this,"engine");y(this,"isPlaying",!1);y(this,"playTimer");y(this,"wasPlayingBeforeInput",!1);y(this,"delay",Im.includes(Fr(Nr)??"")?Fr(Nr):"0.5");y(this,"highlightMode",Fr(km)==="nextToExecute"?"nextToExecute":"lastExecuted");y(this,"buttons");y(this,"inputSection");y(this,"trace");y(this,"variables");y(this,"output");y(this,"transcript",[]);y(this,"printed",0);y(this,"notice");y(this,"editButton");y(this,"robot");y(this,"liveBusy",!1);this.currentDocument=e,this.onHighlight=t,this.findSubprogram=n,this.onEdit=a,this.onTranscript=s,this.engine=new Bi(e(),n),this.element=document.createElement("aside"),this.element.className="simpanel",this.build()}setRobot(e){var t;this.robot!==e&&((t=this.robot)==null||t.element.remove(),this.robot=e,e&&(this.element.querySelector("section").after(e.element),e.onWorldChange=()=>this.restartEngine(),e.reset()))}showRobot(){var e;(e=this.robot)==null||e.show()}begin(){this.pause(),this.restartEngine(),this.showRobot()}end(){this.pause()}step(){var n,a,s;if((n=this.robot)!=null&&n.live){this.stepLive();return}if(!this.engine.canStep){this.pause();return}const e=this.isPlaying,t=this.engine.currentStepPath;(a=this.robot)==null||a.prepare(this.engine),this.engine.step(),(s=this.robot)==null||s.follow(this.engine.state.robotActions,e?Number(this.delay)*850:450),this.afterStep(e,t)}async stepLive(){if(this.liveBusy)return;if(!this.engine.canStep){this.pause();return}this.liveBusy=!0;const e=this.robot,t=this.isPlaying,n=this.engine.currentStepPath;try{await e.prepareLive(this.engine,ob(JSON.stringify(this.currentDocument()))),this.engine.step(),e.follow(this.engine.state.robotActions,450),await e.drive(this.engine.state.robotActions)}catch(a){e.liveFailed(a),this.isPlaying=!1}finally{this.liveBusy=!1}this.afterStep(t,n)}afterStep(e,t){this.collectOutput(),this.highlightMode==="nextToExecute"&&this.engine.canStep?this.onHighlight(this.engine.currentStepPath):this.onHighlight(t??this.engine.currentStepPath),this.engine.state.inputRequest&&e&&(this.wasPlayingBeforeInput=!0),this.engine.canStep||this.pause(),this.update()}reset(){this.pause(),this.restartEngine()}play(){if(this.isPlaying||!this.engine.canStep)return;this.isPlaying=!0;const e=async()=>{var t;this.playTimer=void 0,this.isPlaying&&((t=this.robot)!=null&&t.live?await this.stepLive():this.step(),this.isPlaying&&this.engine.canStep?this.playTimer=window.setTimeout(()=>void e(),Number(this.delay)*1e3):(this.isPlaying=!1,this.update()))};e()}pause(){this.playTimer!==void 0&&window.clearTimeout(this.playTimer),this.playTimer=void 0,this.isPlaying=!1,this.update()}submitInput(e){var s,r;const t=this.isPlaying||this.wasPlayingBeforeInput;this.pause();const n=((s=this.engine.state.inputRequest)==null?void 0:s.prompt)??"",a=(r=this.engine.state.inputRequest)==null?void 0:r.continuesLine;if(this.engine.provideInput(e.value),!this.engine.state.inputRequest){const o=this.transcript[this.transcript.length-1];a&&o&&o.typed===void 0?o.typed=e.value:this.transcript.push({text:n?`${n} `:"",typed:e.value}),e.value=""}this.onHighlight(this.engine.currentStepPath),t&&this.engine.canStep&&(this.wasPlayingBeforeInput=!1,this.play()),this.update()}restartEngine(){var e;this.engine=new Bi(this.currentDocument(),this.findSubprogram),this.transcript=[],this.printed=0,this.wasPlayingBeforeInput=!1,(e=this.robot)==null||e.reset(),this.onHighlight(this.engine.currentStepPath),this.update()}build(){this.element.innerHTML=`

${Oe(p("simulation_controls"))}

@@ -77129,7 +80523,7 @@ ${l}`)}es=AW(((o=e.find(([l])=>l==="begriffe.md"))==null?void 0:o[1])??"")}funct

@@ -77138,23 +80532,23 @@ ${l}`)}es=AW(((o=e.find(([l])=>l==="begriffe.md"))==null?void 0:o[1])??"")}funct

${Oe(p("simulation_trace"))}

${Oe(p("simulation_variables"))}

${Oe(p("simulation_output"))}

- `;const e=a=>this.element.querySelector(a);this.buttons={play:e("[data-sim=play]"),pause:e("[data-sim=pause]"),step:e("[data-sim=step]"),stop:e("[data-sim=stop]")},this.buttons.play.addEventListener("click",()=>this.play()),this.buttons.pause.addEventListener("click",()=>this.pause()),this.buttons.step.addEventListener("click",()=>this.step()),this.buttons.stop.addEventListener("click",()=>this.reset()),this.editButton=e(".sim-edit"),this.editButton.addEventListener("click",()=>this.onEdit());const t=e("[data-sim=highlight]");t.value=this.highlightMode,t.addEventListener("change",()=>{this.highlightMode=t.value,Sm(km,this.highlightMode)});const n=e("[data-sim=delay]");n.value=this.delay,n.addEventListener("change",()=>{this.delay=n.value,Sm(Nr,this.delay)}),this.inputSection=e(".sim-input > div"),this.trace=e(".sim-trace"),this.variables=e(".sim-vars"),this.output=e(".sim-output"),this.notice=e(".sim-notice")}collectOutput(){const e=this.engine.state.outputLines;for(;this.printedr.localeCompare(o));if(n.length===0)this.variables.innerHTML=`

${Oe(p("simulation_variables_placeholder"))}

`;else{const r=document.createElement("table");for(const o of n){const l=r.insertRow();l.insertCell().textContent=o;const u=e.variables.get(o),m=l.insertCell();u.kind==="grid"?m.append(Rg(u)):m.textContent=_e(u)}this.variables.replaceChildren(r)}e.outputLines.length===0&&e.files.size===0?this.output.innerHTML=`

${Oe(p("simulation_output_placeholder"))}

`:(this.output.replaceChildren(...e.outputLines.map(r=>{const o=document.createElement("div");return o.textContent=r,o}),...Fg(e.files)),this.output.scrollTop=this.output.scrollHeight)}updateInput(){const e=this.engine.state.inputRequest,t=this.inputSection;if(t.parentElement.classList.toggle("active",!!e),!e){t.innerHTML=`

${Oe(p("simulation_input_placeholder"))}

`;return}let n=t.querySelector("form");if(!n){n=document.createElement("form"),n.innerHTML=`

`;const l=n.querySelector("input");n.addEventListener("submit",u=>{u.preventDefault(),this.submitInput(l)}),t.replaceChildren(n),requestAnimationFrame(()=>l.focus())}const a=this.engine.state.outputLines;n.querySelector(".sim-prompt").textContent=e.prompt||(a[a.length-1]??"");const s=n.querySelector("input");s.inputMode=e.valueType==="string"||e.valueType==="boolean"?"text":"decimal";const r=this.engine.state.inputErrorNotice,o=n.querySelector(".sim-input-error");o.textContent=r?i1(r):"",o.hidden=!r}}function Rg(i){const e=document.createElement("table");e.className="sim-grid";for(const t of i.value){const n=e.insertRow();for(const a of t){const s=n.insertCell();s.textContent=String(a),a===!0&&(s.className="sim-grid-true")}}return e}const T1=Array.from("ABCDEFGHIJKLMNOPQRSTUVWXYZ"),Vn=360/T1.length,ZE="http://www.w3.org/2000/svg";function Re(i,e={},...t){const n=document.createElement(i);for(const[a,s]of Object.entries(e))n.setAttribute(a,s);return n.append(...t),n}function vt(i,e={},t){const n=document.createElementNS(ZE,i);for(const[a,s]of Object.entries(e))n.setAttribute(a,String(s));return t!==void 0&&(n.textContent=t),n}function LE(i,e){const t=(e%26+26)%26;return Array.from(i).map(n=>{const a=n.charCodeAt(0);return a>=65&&a<=90?String.fromCharCode((a-65+t)%26+65):a>=97&&a<=122?String.fromCharCode((a-97+t)%26+97):n}).join("")}function Tm(i,e){const t=vt("g",{class:e}),n=T1.map((a,s)=>{const r=vt("g",{transform:`rotate(${s*Vn})`});return r.append(vt("text",{x:0,y:-i,"text-anchor":"middle","dominant-baseline":"central"},a)),t.append(r),r});return{group:t,cells:n}}function WE(i,e){let t=i,n=!1,a=-t*Vn;const s=Re("section",{class:"learn-game learn-caesar"});s.append(Re("div",{class:"learn-game-head"},Re("strong",{},p("web_learn_caesar_title")))),s.append(Re("p",{class:"learn-game-status"},p("web_learn_caesar_hint")));const r=vt("svg",{viewBox:"-200 -200 400 400",class:"learn-caesar-disc",role:"img"});r.append(vt("circle",{r:196,class:"outer-disc"})),r.append(vt("path",{d:EE(196,92,Vn/2),class:"window"}));const o=Tm(168,"outer-letters");r.append(o.group);for(let C=0;C{o.cells.forEach((L,F)=>L.classList.toggle("marked",F===C)),u.cells.forEach((L,F)=>L.classList.toggle("marked",C!==void 0&&F===(C+t)%26))},k=()=>{m.textContent=String(t),l.setAttribute("transform",`rotate(${a})`),r.setAttribute("aria-label",p("web_learn_caesar_key_fmt",t)),x.textContent=p(n?"web_learn_caesar_secret":"web_learn_caesar_plain"),w.textContent=p(n?"web_learn_caesar_plain":"web_learn_caesar_secret"),f.classList.toggle("active",!n),b.classList.toggle("active",n),z.textContent=LE(v.value,n?-t:t)||" ";const C=Array.from(v.value.toUpperCase()).reverse().find(F=>T1.includes(F));if(C===void 0)return S();const L=T1.indexOf(C);S(n?(L-t+26)%26:L)},P=C=>{t=(C%26+26)%26,a=-t*Vn,k()};c.addEventListener("click",()=>P(t-1)),d.addEventListener("click",()=>P(t+1)),f.addEventListener("click",()=>{var C;n&&(v.value=((C=z.textContent)==null?void 0:C.trim())??""),n=!1,k()}),b.addEventListener("click",()=>{var C;n||(v.value=((C=z.textContent)==null?void 0:C.trim())??""),n=!0,k()}),v.addEventListener("input",k),o.cells.forEach((C,L)=>C.addEventListener("click",()=>S(L)));let D;const A=C=>{const L=r.getBoundingClientRect();return Math.atan2(C.clientY-(L.top+L.height/2),C.clientX-(L.left+L.width/2))*180/Math.PI};l.addEventListener("pointerdown",C=>{const L=C;D=A(L)-a,l.classList.add("dragging"),r.setPointerCapture(L.pointerId),L.preventDefault()}),r.addEventListener("pointermove",C=>{if(D===void 0)return;a=A(C)-D,l.setAttribute("transform",`rotate(${a})`);const L=Math.round(-a/Vn);if((L%26+26)%26!==t){t=(L%26+26)%26;const F=a;k(),a=F,l.setAttribute("transform",`rotate(${a})`)}});const B=()=>{D!==void 0&&(D=void 0,l.classList.remove("dragging"),P(t))};return r.addEventListener("pointerup",B),r.addEventListener("pointercancel",B),k(),s}function EE(i,e,t){const n=(a,s)=>{const r=(s-90)*Math.PI/180;return`${(a*Math.cos(r)).toFixed(2)} ${(a*Math.sin(r)).toFixed(2)}`};return`M ${n(i,-t)} A ${i} ${i} 0 0 1 ${n(i,t)} L ${n(e,t)} A ${e} ${e} 0 0 0 ${n(e,-t)} Z`}const T0=i=>p(`web_visubot_part_${i}`),Jg=new WeakMap;function Gg(i,e,t,n){const a=document.createElement("div");a.className="visubot-model";const s=document.createElement("div");s.className="visubot-stage";const r=document.createElement("div");r.className="visubot-part-label",r.hidden=!0,s.append(r);const o=(c,d,h)=>{r.hidden=!1,r.textContent=T0(c),r.style.left=`${Math.min(d+12,s.clientWidth-140)}px`,r.style.top=`${h+12}px`},l=document.createElement("p");l.className="visubot-model-hint hint",l.textContent=p("web_visubot_tap_part"),l.hidden=!!n,a.append(s,l);const u=ee(async()=>{const{Robot3D:c}=await import("./robot3d-BlWxLlAd.js");return{Robot3D:c}},[],import.meta.url).then(({Robot3D:c})=>{const d=new c(s);d.showcase(),d.highlight(i),i.includes("leds")&&d.setLed([40,90,255]),d.focusOn([],e==="unten"||e==="bottom"?"":e,!1,1),d.focusOn(i,e,t);let h;return s.addEventListener("pointerdown",g=>h={x:g.clientX,y:g.clientY}),s.addEventListener("pointerup",g=>{if(!h||Math.hypot(g.clientX-h.x,g.clientY-h.y)>5)return;const f=d.partAt(g.clientX,g.clientY);if(!f)return;if(n)return n(f);d.highlight(f);const b=s.getBoundingClientRect();o(f,g.clientX-b.left,g.clientY-b.top)}),s.addEventListener("pointermove",g=>{if(g.pointerType!=="mouse"||n)return;const f=d.partAt(g.clientX,g.clientY);if(r.hidden=!f,!f)return;const b=s.getBoundingClientRect();o(f,g.clientX-b.left,g.clientY-b.top)}),s.addEventListener("pointerleave",()=>r.hidden=!0),d}).catch(c=>{console.error(c),s.textContent=p("web_visubot_no_3d")}),m={box:a,ready:u,focus:i,view:e};return Jg.set(a,m),m}function NE(i,e,t=!1){return Gg(i,e,t).box}function FE(i){const e=i.querySelector(".visubot-model"),t=e&&Jg.get(e);for(const n of i.querySelectorAll("[data-robot-part]")){const a=(n.dataset.robotPart??"").split(",").filter(Boolean);if(n.title=a.map(T0).join(", "),!t)continue;const s=()=>void t.ready.then(o=>o==null?void 0:o.highlight(a)),r=()=>void t.ready.then(o=>o==null?void 0:o.highlight(t.focus));n.addEventListener("mouseenter",s),n.addEventListener("focus",s),n.addEventListener("mouseleave",r),n.addEventListener("blur",r),n.addEventListener("click",()=>{t.ready.then(o=>{o==null||o.highlight(a),o==null||o.focusOn(a,t.view)}),t.box.scrollIntoView({block:"nearest",behavior:"smooth"})})}}function RE(i,e){let t=0;const n=document.createElement("div");n.className="visubot-quiz-question";const a=document.createElement("p");a.className="visubot-quiz-feedback",a.setAttribute("aria-live","polite");const s=()=>{n.innerHTML=jn(`**${t+1}/${i.length}** ${i[t].question}`)},r=Gg([],void 0,!1,l=>{if(!(t>=i.length)){if(r.ready.then(u=>u==null?void 0:u.highlight(l)),l!==i[t].part){a.className="visubot-quiz-feedback wrong",a.textContent=p("web_visubot_quiz_wrong_fmt",T0(l));return}t++,a.className="visubot-quiz-feedback right",t{u.forEach(v=>{window.clearTimeout(v),window.clearInterval(v)}),u=[]},c=()=>{a.textContent=`${p("web_game_round_fmt",o+1,r)} · ${p("web_game_score_fmt",l)}`},d=()=>{const v=$("button",{class:"primary"},o+1{o++,o{const v=i.rounds[o],w=i.seconds,z=$("div",{class:"learn-bomb-fuse"},$("span",{})),I=$("span",{class:"learn-bomb-time"}),S=$("div",{class:"learn-bomb","aria-live":"polite"},$("span",{class:"learn-bomb-icon","aria-hidden":"true"},"💣"),I,z),k=$("div",{class:"learn-game-feedback",role:"status"}),P=v.wrongPart!==void 0,D=[],A=v.code.split(` -`).map((X,he)=>{if(!P){const M=$("button",{class:"ln",type:"button"},X||" ");return M.disabled=!X.trim(),D.push({button:M,line:he+1,right:he+1===v.wrongLine}),M}const ae=$("div",{class:"ln parts"});X.trim()||ae.append(" ");for(const M of fg(X)){if(!M.part){ae.append(M.text);continue}const j=$("button",{class:"part",type:"button"},M.text);D.push({button:j,line:he+1,right:he+1===v.wrongLine&&M.text===v.wrongPart}),ae.append(j)}return ae});for(const X of D)X.button.addEventListener("click",()=>F(X.right?"right":X.line===v.wrongLine?"part":"wrong",X.button));const B=$("div",{class:`learn-game-code learn-bomb-code mono${P?" by-parts":""}`,dir:"ltr"},...A),C=Date.now(),L=()=>{if(!t.isConnected&&Date.now()-C>1e3)return m();const X=Math.max(0,w-(Date.now()-C)/1e3);I.textContent=p("web_game_time_fmt",Math.ceil(X)),z.firstChild.style.width=`${X/w*100}%`,S.classList.toggle("hurry",X<=5),X<=0&&F("time")},F=(X,he)=>{m();for(const j of D)j.button.disabled=!0,j.right&&j.button.classList.add("right");P&&A[v.wrongLine-1].classList.add("right"),he&&X!=="right"&&he.classList.add("wrong");const ae=X==="right";ae&&l++,c(),S.classList.add(ae?"defused":"boom"),S.firstChild.textContent=ae?"✂️":"💥",k.className=`learn-game-feedback ${ae?"right":"wrong"}`;const M=d();k.replaceChildren($("p",{},p(ae?"web_game_defused":X==="time"?"web_game_boom_time":X==="part"?"web_game_boom_part":P?"web_game_boom_wrong_part":"web_game_boom_wrong")),Gn("div",{class:"learn-game-explain"},v.explanation),$("p",{class:"learn-bomb-fix"},`${p("web_game_fix")} `,$("code",{},v.fix.trim())),M),M.focus({preventScroll:!0})},Y=Gn("p",{class:"learn-game-question"},v.question);P&&Y.append(" ",$("span",{class:"learn-bomb-hint"},p("web_game_bomb_parts_hint"))),s.replaceChildren(S,Y,B,k),L();const ne=window.setInterval(L,200);u.push(ne)},g=()=>{const v=i.rounds[o],w=[];v.code.trim()&&w.push(jm(v.code).element),w.push(Gn("p",{class:"learn-game-question"},v.question),$("p",{class:"learn-order-hint"},p("web_game_order_hint")));const z=$("div",{class:"learn-game-options learn-order"}),I=$("div",{class:"learn-game-feedback",role:"status"});let S=0;const k=GE(v.options.length).map(D=>{const A=$("span",{class:"learn-order-badge","aria-hidden":"true"}),B=$("span",{});B.innerHTML=je(v.options[D].text);const C=$("button",{},A,B);return C.addEventListener("click",()=>{if(D!==S)return C.classList.add("wrong"),P(!1);C.classList.add("right"),A.textContent=String(++S),C.disabled=!0,S===v.options.length&&P(!0)}),z.append(C),{k:D,b:C,badge:A}}),P=D=>{for(const{k:B,b:C,badge:L}of[...k].sort((F,Y)=>F.k-Y.k))C.disabled=!0,L.textContent=String(B+1),z.append(C);D&&l++,c(),I.className=`learn-game-feedback ${D?"right":"wrong"}`;const A=d();I.replaceChildren($("p",{},p(D?"web_game_right":"web_game_wrong_short")),Gn("div",{class:"learn-game-explain"},v.explanation),A),A.focus({preventScroll:!0})};s.replaceChildren(...w,z,I)},f=()=>{if(m(),i.kind==="bombe"||i.kind==="reihenfolge"){c(),i.kind==="bombe"?h():g();return}const v=i.rounds[o];c();const w=jm(v.code),z=[];let I;i.kind==="zuhoerer"?(I=HE(xg(v.code),w),z.push($("div",{class:"learn-swing-row"},w.element,I.element)),v.clicks.length&&z.push($("p",{class:"learn-swing-clicks"},`${p("web_game_clicks")} `,...v.clicks.flatMap((A,B)=>[...B?[" → "]:[],$("code",{},A)])))):v.code.trim()&&z.push(w.element),z.push(Gn("p",{class:"learn-game-question"},v.question));const S=$("div",{class:`learn-game-options ${i.kind==="layout"?"pictures":""}`}),k=$("div",{class:"learn-game-feedback",role:"status"}),P=v.options.map(A=>{const B=$("button",{});return i.kind==="layout"?B.append(qE(A.text)):A.text.includes(` -`)?B.append(VE(A.text)):B.innerHTML=je(A.text),B.addEventListener("click",()=>D(A.right,B)),S.append(B),B}),D=(A,B)=>{P.forEach((L,F)=>{L.disabled=!0,v.options[F].right&&L.classList.add("right")}),A||B.classList.add("wrong"),A&&l++,c(),k.className=`learn-game-feedback ${A?"right":"wrong"}`;const C=d();k.replaceChildren($("p",{},p(A?"web_game_right":"web_game_wrong_short")),Gn("div",{class:"learn-game-explain"},v.explanation)),k.append(C),I&&(u=I.replay(v.clicks,()=>C.before($("p",{class:"learn-swing-try"},p("web_game_try"))))),C.focus({preventScroll:!0})};s.replaceChildren(...z,S,k)},b=()=>{m(),a.textContent="";const v=$("button",{class:"primary"},p("web_game_again"));v.addEventListener("click",()=>{o=l=0,f()}),s.replaceChildren($("p",{class:"learn-game-result"},p("web_game_done_fmt",l,r)),$("p",{},p(l===r?"web_game_perfect":l>=r*.7?"web_game_good":"web_game_practice_short")),v)},x=$("button",{class:"primary"},p("web_game_start"));return x.addEventListener("click",f),s.append(Gn("p",{},i.intro),x),t}function GE(i){const e=[...Array(i).keys()];for(;e.every((t,n)=>t===n);)for(let t=i-1;t>0;t--){const n=Math.floor(Math.random()*(t+1));[e[t],e[n]]=[e[n],e[t]]}return e}function jm(i){const e=i.split(` -`).map(n=>$("div",{class:"ln"},n||" "));return{element:$("pre",{class:"learn-game-code mono",dir:"ltr"},...e),highlight(n,a){e.forEach((s,r)=>s.classList.toggle("hit",n!==void 0&&r>=n&&r<=(a??n)))}}}function HE(i,e){const t=vg(i),n=$("div",{class:"learn-swing-window",dir:"ltr"});n.append($("div",{class:"learn-swing-title"},i.title||" "));const a=$("div",{class:"learn-swing-body"}),s=new Map;for(const c of i.labels){const d=$("div",{class:"learn-swing-label"},t.texts[c.name]);s.set(c.name,d),a.append(d)}const r=i.buttons.map(c=>{const d=$("button",{class:"learn-swing-button",disabled:""},t.texts[c.name]);return s.set(c.name,d),a.append(d),d}),o=$("p",{class:"learn-swing-event",role:"status"}),l=$("pre",{class:"learn-swing-console mono",hidden:""});n.append(a,o,l);const u=c=>{var h,g;const d=s.get(c.button);d.classList.add("pressed"),window.setTimeout(()=>d.classList.remove("pressed"),350),e.highlight((h=c.listener)==null?void 0:h.from,(g=c.listener)==null?void 0:g.to),o.textContent=c.listener?p("web_game_event_fmt",d.textContent??""):p("web_game_nobody"),o.className=`learn-swing-event ${c.listener?"heard":"nobody"}`;for(const[f,b]of Object.entries(c.texts)){const x=s.get(f);x&&x.textContent!==b&&(x.textContent=b,x.classList.remove("changed"),x.offsetWidth,x.classList.add("changed"))}c.console.length&&(l.hidden=!1,l.textContent+=c.console.map(f=>`${f} -`).join(""))},m=c=>u(yg(i,t,c));return{element:n,replay(c,d){const h=c.map((g,f)=>window.setTimeout(()=>m(g),(f+.3)*_m));return h.push(window.setTimeout(()=>{i.buttons.forEach((g,f)=>{r[f].disabled=!1,r[f].addEventListener("click",()=>u(wg(i,t,g.name)))}),d()},(c.length+.3)*_m)),h}}}function VE(i){return $("pre",{class:"learn-game-file mono",dir:"ltr"},i)}function qE(i){const e=bg(i),t=$("div",{class:"learn-layout-window",dir:"ltr"},$("div",{class:"learn-layout-title"})),n=$("div",{class:`learn-layout-body ${e.kind}`}),a=(s,r)=>$("span",{class:"learn-layout-cell",...r?{style:`grid-area:${r}`}:{}},s);if(e.kind==="border")for(const[s,r]of Object.entries(e.areas))n.append(a(r,s));else if(e.kind==="grid"){const s=Math.max(...e.rows.map(r=>r.length));n.style.gridTemplateColumns=`repeat(${s}, 1fr)`;for(const r of e.rows)for(let o=0;oa(r))));return t.append(n),t}function G(i,e={},...t){const n=document.createElement(i);for(const[a,s]of Object.entries(e))n.setAttribute(a,s);return n.append(...t),n}function an(i,e,t){const n=G(i,e);return n.innerHTML=je(t),n}function Cm(i){return G("pre",{class:"learn-game-code mono",dir:"ltr"},...i.split(` -`).map(e=>G("div",{class:"ln"},e||" ")))}function QE(i,e){const t=G("section",{class:"learn-game learn-rescue"}),n=G("div",{class:"learn-game-head"});n.append(G("img",{src:e,alt:"",width:"40",height:"40"}),G("strong",{},i.title));const a=i.stations.length,s=i.stations.map(()=>G("span",{class:"learn-rescue-dot"})),r=G("img",{class:"learn-rescue-ludwig",src:e,alt:"",width:"32",height:"32"}),o=G("span",{class:"learn-rescue-tower","aria-hidden":"true"},"🏰",G("span",{class:"learn-rescue-zora"},"🐐"),G("span",{class:"learn-rescue-fox"},"🦊")),l=G("span",{class:"learn-rescue-free"},"🐐"),u=G("div",{class:"learn-rescue-path","aria-hidden":"true"},r,...s,o),m=G("p",{class:"learn-game-status"}),c=G("div",{class:"learn-game-stage"}),d=Hg(i);t.append(n,u,m,c);let h=0;const g=()=>{s.forEach((I,S)=>I.classList.toggle("done",S{const I=[...i.alphabet].map((S,k)=>G("span",{class:"learn-rescue-letter"},G("b",{},S),G("small",{},String(k))));return{element:G("div",{class:"learn-rescue-alphabet mono",dir:"ltr"},...I),cells:I}},b=I=>{const S=i.stations[I];m.textContent=p("web_learn_rescue_station_fmt",I+1,a,S.name);const k=f(),P=G("input",{type:"text",inputmode:"numeric",autocomplete:"off",class:"learn-rescue-number mono","aria-label":p("web_learn_rescue_number")}),D=G("button",{class:"primary"},p("web_learn_check")),A=G("div",{class:"learn-game-feedback",role:"status"}),B=()=>{const C=P.value.trim();if(!/^-?\d+$/.test(C)){A.className="learn-game-feedback wrong",A.replaceChildren(G("p",{},p("web_learn_rescue_not_number")));return}if(Number(C)!==S.answer){A.className="learn-game-feedback wrong",A.replaceChildren(G("p",{},p("web_learn_rescue_wrong")),...S.hint?[an("div",{class:"learn-game-explain"},`**${p("web_learn_hint")}:** ${S.hint}`)]:[]),P.select();return}P.disabled=D.disabled=!0;const L=i.alphabet.charAt(S.answer);k.cells[S.answer].classList.add("hit"),d.give(S.row,S.col,L),h++,g();const F=I+1===a,Y=G("button",{class:"primary"},p(F?"web_learn_rescue_to_crossword":"web_game_next"));Y.addEventListener("click",()=>F?x():b(I+1)),A.className="learn-game-feedback right",A.replaceChildren(G("p",{},p("web_game_right")),G("p",{class:"learn-rescue-charat mono",dir:"ltr"},`alphabet.charAt(${S.answer})`,G("span",{"aria-hidden":"true"}," → "),G("code",{},`'${L}'`)),an("div",{class:"learn-game-explain"},S.explanation),G("p",{class:"learn-rescue-moved"},p("web_learn_rescue_letter_moved")),Y),Y.focus({preventScroll:!0})};D.addEventListener("click",B),P.addEventListener("keydown",C=>{C.key==="Enter"&&B()}),c.replaceChildren(Cm(S.code),an("p",{class:"learn-game-question"},S.question),G("div",{class:"learn-rescue-answer"},P,D),A,G("p",{class:"learn-rescue-label"},p("web_learn_rescue_alphabet")),Cm(`String alphabet = "${i.alphabet}";`),k.element,d.element),P.focus({preventScroll:!0})},x=()=>{m.textContent=p("web_learn_rescue_crossword");const I=G("div",{class:"learn-game-feedback",role:"status"}),S=G("button",{class:"primary"},p("web_learn_check"));S.addEventListener("click",()=>{if(!d.check()){I.className="learn-game-feedback wrong",I.replaceChildren(G("p",{},p("web_learn_rescue_cw_wrong")));return}S.disabled=!0,d.lock();const k=G("button",{class:"primary"},p("web_learn_rescue_to_gate"));k.addEventListener("click",v),I.className="learn-game-feedback right",I.replaceChildren(G("p",{},p("web_learn_rescue_cw_done")),k),k.focus({preventScroll:!0})}),d.unlock(),c.replaceChildren(an("p",{},i.crosswordText),d.element,S,I),d.focusFirst()},v=()=>{m.textContent=p("web_learn_rescue_gate");const I=G("input",{type:"text",autocomplete:"off",autocapitalize:"off",spellcheck:"false",class:"learn-rescue-word mono",size:String(i.keyword.length+2),"aria-label":p("web_learn_rescue_word")}),S=i.gateCode.split(` -`).map(A=>{const B=A.indexOf(Cs);return B<0?G("div",{class:"ln"},A||" "):G("div",{class:"ln"},A.slice(0,B),I,A.slice(B+Cs.length))}),k=G("button",{class:"primary"},p("web_learn_rescue_open")),P=G("div",{class:"learn-game-feedback",role:"status"}),D=()=>{const A=I.value.trim();if(A!==i.keyword){const C=A.toUpperCase()===i.keyword.toUpperCase();P.className="learn-game-feedback wrong",P.replaceChildren(G("p",{},p(C?"web_learn_rescue_gate_case":"web_learn_rescue_gate_wrong"))),I.select();return}I.disabled=k.disabled=!0,t.classList.add("freed"),r.after(l),m.textContent="";const B=G("button",{},p("web_game_again"));B.addEventListener("click",w),P.className="learn-game-feedback right",P.replaceChildren(G("p",{},p("web_learn_rescue_freed")),an("div",{class:"learn-game-explain"},i.end),B)};k.addEventListener("click",D),I.addEventListener("keydown",A=>{A.key==="Enter"&&D()}),c.replaceChildren(an("p",{},i.gateText),G("div",{class:"learn-game-code mono learn-rescue-gate",dir:"ltr"},...S),k,P),I.focus({preventScroll:!0})},w=()=>{h=0,t.classList.remove("freed"),l.remove(),d.reset(),g(),b(0)},z=G("button",{class:"primary"},p("web_game_start"));return z.addEventListener("click",w),c.append(an("p",{},i.intro),z),t}function UE(i,e){const t=G("section",{class:"learn-game learn-rescue learn-crossword-game"}),n=G("div",{class:"learn-game-head"});n.append(G("img",{src:e,alt:"",width:"40",height:"40"}),G("strong",{},i.title));const a=Hg(i),s=G("div",{class:"learn-game-feedback",role:"status"}),r=G("button",{class:"primary"},p("web_learn_check"));return r.addEventListener("click",()=>{if(!a.check()){s.className="learn-game-feedback wrong",s.replaceChildren(G("p",{},p("web_learn_rescue_cw_wrong")));return}r.disabled=!0,a.lock();const o=G("button",{},p("web_game_again"));o.addEventListener("click",()=>{a.reset(),a.unlock(),r.disabled=!1,s.className="learn-game-feedback",s.replaceChildren(),a.focusFirst()}),s.className="learn-game-feedback right",s.replaceChildren(G("p",{},p("web_learn_rescue_cw_done")),G("p",{class:"learn-game-result"},G("span",{class:"mono",dir:"ltr"},i.keyword)),...i.end?[an("p",{},i.end)]:[],o)}),a.unlock(),t.append(n,an("p",{},i.intro),a.element,r,s),t}function Hg(i){const e=WW(i),t=new Map(i.solution.map((g,f)=>[`${g.row} ${g.col}`,f])),n=new Map;for(const g of i.words)n.set(`${g.row} ${g.col}`,g.number);const a=new Map,s=G("div",{class:"learn-cw-grid",dir:"ltr"});s.style.gridTemplateColumns=`repeat(${i.cols}, var(--cw-cell))`;let r=!0;const o=(g,f)=>i.words.filter(b=>b.across?b.row===g&&f>=b.col&&f=b.row&&g{var v;const x=r?`${g} ${f+b}`:`${g+b} ${f}`;(v=a.get(x))==null||v.focus()};e.forEach((g,f)=>g.forEach((b,x)=>{if(!b)return s.append(G("span",{class:"learn-cw-empty"}));const v=`${f} ${x}`,w=G("input",{type:"text",maxlength:"1",autocomplete:"off",autocapitalize:"characters",spellcheck:"false","aria-label":p("web_learn_rescue_cell_fmt",f+1,x+1)});w.disabled=!0,w.addEventListener("focus",()=>{const k=o(f,x);k.some(P=>P.across===r)||(r=k[0].across),w.select()}),w.addEventListener("input",()=>{w.value=w.value.slice(-1).toUpperCase(),w.classList.remove("wrong"),c(),w.value&&l(f,x,1)}),w.addEventListener("keydown",k=>{if(k.key==="Backspace"&&!w.value)l(f,x,-1);else if(k.key==="ArrowRight"||k.key==="ArrowLeft")r=!0,l(f,x,k.key==="ArrowRight"?1:-1);else if(k.key==="ArrowDown"||k.key==="ArrowUp")r=!1,l(f,x,k.key==="ArrowDown"?1:-1);else return;k.preventDefault()}),a.set(v,w);const z=t.get(v),I=G("span",{class:`learn-cw-cell${z!==void 0?" key":""}`}),S=n.get(v);S&&I.append(G("small",{class:"learn-cw-number"},String(S))),z!==void 0&&I.append(G("small",{class:"learn-cw-keyindex"},String(z+1))),I.append(w),s.append(I)}));const u=g=>{const f=G("ol",{class:"learn-cw-clues"});for(const b of i.words.filter(x=>x.across===g).sort((x,v)=>x.number-v.number)){const x=an("li",{value:String(b.number)},`${b.clue} (${b.word.length})`);x.addEventListener("click",()=>{var v;r=b.across,(v=a.get(`${b.row} ${b.col}`))==null||v.focus()}),f.append(x)}return G("div",{},G("strong",{},p(g?"web_learn_rescue_across":"web_learn_rescue_down")),f)},m=i.solution.map(()=>G("span",{class:"learn-cw-keybox"})),c=()=>i.solution.forEach((g,f)=>m[f].textContent=a.get(`${g.row} ${g.col}`).value||" "),d=G("div",{class:"learn-cw"},G("div",{class:"learn-cw-board"},s,G("p",{class:"learn-cw-keyword"},`${p("web_learn_rescue_keyword")} `,G("span",{class:"mono",dir:"ltr"},...m))),G("div",{class:"learn-cw-cluebox"},u(!0),u(!1))),h=new Set;return{element:d,give(g,f,b){const x=a.get(`${g} ${f}`);x.value=b,x.parentElement.classList.add("given","arrived"),h.add(`${g} ${f}`),c()},unlock(){for(const[g,f]of a)f.disabled=h.has(g)},lock(){for(const g of a.values())g.disabled=!0},focusFirst(){var g;(g=[...a].find(([f])=>!h.has(f)))==null||g[1].focus({preventScroll:!0})},check(){let g=!0;for(const[f,b]of a){const[x,v]=f.split(" ").map(Number),w=b.value!==e[x][v];b.classList.toggle("wrong",w),w&&(g=!1)}return g},reset(){h.clear();for(const g of a.values())g.value="",g.disabled=!0,g.classList.remove("wrong"),g.parentElement.classList.remove("given","arrived");c()}}}const YE="http://www.w3.org/2000/svg";function it(i,e={},...t){const n=document.createElement(i);for(const[a,s]of Object.entries(e))n.setAttribute(a,s);return n.append(...t),n}function v1(i,e={}){const t=document.createElementNS(YE,i);for(const[n,a]of Object.entries(e))t.setAttribute(n,String(a));return t}function Rr(i,e,t){const n=it(i,e);return n.innerHTML=je(t),n}const $E={"#":"#6b7280","=":"#111827",r:"#ef4444",g:"#22c55e",b:"#3b82f6",y:"#facc15"},KE=450;function XE(i,e){const t=it("section",{class:"learn-game learn-round-game learn-drive-game"}),n=it("div",{class:"learn-game-head"});n.append(it("img",{src:e,alt:"",width:"40",height:"40"}),it("strong",{},i.title));const a=it("p",{class:"learn-game-status"}),s=it("div",{class:"learn-game-stage"});t.append(n,a,s);const r=i.rounds.length,o=i.field;let l=0,u=0,m=0;const c=()=>{a.textContent=`${p("web_game_round_fmt",l+1,r)} · ${p("web_game_score_fmt",u)}`},d=()=>{const b=it("button",{class:"primary"},l+1{l++,l{window.clearInterval(m),c();const b=i.rounds[l],x=b.map[0].length,v=b.map.length,w=x*o,z=v*o,I=M=>M+w/2,S=M=>z/2-M,k=Ag(b,o),P=eE(b,o),D=v1("svg",{viewBox:`-2 -2 ${w+4} ${z+4}`,class:"learn-drive-map",role:"group","aria-label":b.question}),A=[];b.map.forEach((M,j)=>{A.push([]),Array.from(M).forEach((N,V)=>{const U=v1("rect",{x:V*o,y:j*o,width:o,height:o,class:"cell",fill:$E[N]??"#ffffff",tabindex:0,role:"button","aria-label":`${V+1}, ${j+1}`}),re=()=>ae(V,j);U.addEventListener("click",re),U.addEventListener("keydown",K=>{(K.key==="Enter"||K.key===" ")&&(K.preventDefault(),re())}),D.append(U),A[j].push(U)})});const B=v1("polyline",{class:"trail",points:"",fill:"none"}),C=v1("g",{class:"robot"}),L=Math.min(o*.7,20);C.append(v1("rect",{x:-L/2,y:-L/2,width:L,height:L,rx:L/5,class:"body"}),v1("path",{d:`M ${-L/3} ${L/6} L 0 ${-L/2.4} L ${L/3} ${L/6} Z`,class:"nose"}));let F=k.start.heading;const Y=M=>{F+=((M.heading-F)%360+540)%360-180,C.style.transform=`translate(${I(M.x)}px, ${S(M.y)}px) rotate(${F}deg)`};Y(k.start),D.append(B,C);const ne=it("div",{class:"learn-game-feedback",role:"status"}),X=it("pre",{class:"learn-game-code mono",dir:"ltr"},...b.code.split(` -`).map(M=>it("div",{class:"ln"},M||" ")));let he=!1;const ae=(M,j)=>{if(he)return;he=!0,D.classList.add("done");const N=M===b.target.col&&j===b.target.row;A[j][M].classList.add(N?"right":"wrong"),N&&u++,c();const V=P.run.frames;let U=0;const re=[`${I(k.start.x)},${S(k.start.y)}`],K=()=>{if(U++,U>=V.length){window.clearInterval(m),A[b.target.row][b.target.col].classList.add("right");const ue=d();ne.className=`learn-game-feedback ${N?"right":"wrong"}`,ne.replaceChildren(it("p",{},p(N?"web_game_right":"web_game_wrong_short")),Rr("div",{class:"learn-game-explain"},b.explanation),ue),ue.focus({preventScroll:!0});return}const le=V[U].pose;Y(le),re.push(`${I(le.x)},${S(le.y)}`),B.setAttribute("points",re.join(" "))};m=window.setInterval(()=>{if(!t.isConnected)return window.clearInterval(m);K()},KE)};s.replaceChildren(X,Rr("p",{class:"learn-game-question"},b.question),D,ne)},g=()=>{window.clearInterval(m),a.textContent="";const b=it("button",{class:"primary"},p("web_game_again"));b.addEventListener("click",()=>{l=u=0,h()}),s.replaceChildren(it("p",{class:"learn-game-result"},p("web_game_done_fmt",u,r)),it("p",{},p(u===r?"web_game_perfect":u>=r*.7?"web_game_good":"web_game_practice_short")),b)},f=it("button",{class:"primary"},p("web_game_start"));return f.addEventListener("click",h),s.append(Rr("p",{},i.intro),f),t}function jt(i,e={},...t){const n=document.createElement(i);for(const[a,s]of Object.entries(e))n.setAttribute(a,s);return n.append(...t),n}function Am(i,e,t){const n=jt(i,e);return n.innerHTML=je(t),n}function eN(i){const e=jt("section",{class:"learn-cloze"});e.append(jt("strong",{class:"learn-cloze-title"},i.title)),i.task&&e.append(Am("p",{},i.task)),e.append(jt("p",{class:"learn-cloze-hint"},p("web_learn_cloze_hint")));const t=[];for(const m of i.blocks){const c=jt("pre",{class:"learn-cloze-code mono",dir:"ltr"});for(const d of m){const h=jt("div",{class:"ln"});for(const g of d){if(typeof g=="string"){h.append(g);continue}const f=jt("input",{type:"text",class:"learn-cloze-gap mono",autocomplete:"off",autocapitalize:"off",autocorrect:"off",spellcheck:"false",enterkeyhint:"done","aria-label":`${t.length+1}`});f.style.width=`${Math.max(3,...g.answers.map(b=>b.length))+1}ch`,t.push({input:f,answers:g.answers}),h.append(f)}d.length||h.append(` -`),c.append(h)}e.append(c)}const n=jt("p",{class:"learn-cloze-status",role:"status"}),a=i.explanation?Am("p",{class:"learn-explanation"},i.explanation):void 0;a&&(a.hidden=!0);const s=jt("button",{class:"learn-cloze-check"},p("web_learn_check")),r=jt("button",{},p("web_learn_cloze_solution")),o=jt("button",{},p("web_learn_cloze_again"));r.hidden=!0,o.hidden=!0;const l=jt("div",{class:"learn-cloze-actions"},s,r,o);e.append(l,n),a&&e.append(a);const u=()=>{var d;let m=0;for(const h of t){const g=sE(h.answers,h.input.value);h.input.classList.toggle("right",g),h.input.classList.toggle("wrong",!g),g&&m++}const c=m===t.length;n.textContent=c?p("web_learn_cloze_all_right"):p("web_learn_cloze_score_fmt",m,t.length),n.className=`learn-cloze-status ${c?"right":"wrong"}`,a&&(a.hidden=!c),c?(t.forEach(h=>h.input.disabled=!0),s.hidden=!0,o.hidden=!1):(r.hidden=!1,(d=t.find(h=>h.input.classList.contains("wrong")))==null||d.input.focus())};return s.addEventListener("click",u),r.addEventListener("click",()=>{for(const m of t)m.input.value=m.answers[0],m.input.classList.remove("right","wrong"),m.input.classList.add("shown"),m.input.disabled=!0;n.textContent="",n.className="learn-cloze-status",a&&(a.hidden=!1),s.hidden=!0,r.hidden=!0,o.hidden=!1}),o.addEventListener("click",()=>{var m;for(const c of t)c.input.value="",c.input.classList.remove("right","wrong","shown"),c.input.disabled=!1;n.textContent="",n.className="learn-cloze-status",a&&(a.hidden=!0),s.hidden=!1,r.hidden=!0,o.hidden=!0,(m=t[0])==null||m.input.focus()}),t.forEach((m,c)=>{m.input.addEventListener("input",()=>m.input.classList.remove("right","wrong")),m.input.addEventListener("keydown",d=>{d.key==="Enter"&&(d.preventDefault(),c1?12:13});return n.forEach((s,r)=>{const o=It("tspan",{x:e.x,y:e.y+4.5+(r-(n.length-1)/2)*14});o.textContent=s,a.append(o)}),a}function ya(i,e){return It("polyline",{points:i.map(t=>t.join(",")).join(" "),fill:"none","marker-end":`url(#${e})`})}function Pm(i,e,t,n){const a=It("text",{x:e,y:t,"font-size":12,"font-weight":600,fill:n?"#248a3d":"#d70015"});return a.textContent=i,a}function iN(i,e){const t=Pg(e,110),n=Math.max(...t.map(u=>u.length)),a=Math.max(70,n*6.6+(i==="raute"?56:26)),s=i==="raute"?48:t.length>1?40:30,r=It("svg",{viewBox:`0 0 ${a+4} ${s+4}`,width:a+4,height:s+4,"aria-hidden":"true"}),o={x:(a+4)/2,y:(s+4)/2,w:a,h:s},l=j0(i,o);return l.setAttribute("fill",_0[i]),l.setAttribute("stroke","#1c1c1e"),l.setAttribute("stroke-width","1.5"),r.append(l,Vg(e,{...o,w:t.length>1?124:a},i)),r}function aN(i){const e=[...Array(i).keys()];for(let t=i-1;t>0;t--){const n=Math.floor(Math.random()*(t+1));[e[t],e[n]]=[e[n],e[t]]}return i>1&&e.every((t,n)=>t===n)&&e.reverse(),e}function sN(){const i=Qe("dl",{class:"learn-pap-legend"}),e=[["oval","web_learn_pap_legend_oval"],["rechteck","web_learn_pap_legend_rect"],["raute","web_learn_pap_legend_diamond"],["parallelogramm","web_learn_pap_legend_para"]];for(const[t,n]of e){const a=t==="raute"?44:40,s=It("svg",{viewBox:`0 0 ${a+4} 28`,width:a+4,height:28,"aria-hidden":"true"}),r=j0(t,{x:(a+4)/2,y:14,w:a,h:t==="raute"?24:18});r.setAttribute("fill",_0[t]),r.setAttribute("stroke","#1c1c1e"),r.setAttribute("stroke-width","1.5"),s.append(r),i.append(Qe("dt",{},s),Qe("dd",{},p(n)))}return i}function rN(i){const e=Qe("section",{class:"learn-pap"});if(e.append(Qe("strong",{class:"learn-pap-title"},i.title)),i.task){const M=Qe("p");M.innerHTML=je(i.task),e.append(M)}e.append(Qe("p",{class:"learn-pap-hint"},p("web_learn_pap_hint")));const{boxes:t,height:n}=hE(i),a=t.filter(Boolean),s=Math.min(...a.map(M=>M.x-M.w/2))-4,r=i.nodes.some(M=>M.shape==="raute"),o=Math.max(...a.map(M=>M.x+M.w/2),r?Math.max(...a.map(M=>M.x))+85+40:0)+4,l=It("svg",{viewBox:`${s} 0 ${o-s} ${n}`,class:"learn-pap-plan",role:"group","aria-label":i.title}),u=`pap-arrow-${++nN}`;l.innerHTML=``;const m=It("g",{stroke:"#1c1c1e","stroke-width":2}),c=It("g"),d=p("web_learn_pap_yes"),h=p("web_learn_pap_no"),g=M=>t[M].y-t[M].h/2,f=M=>t[M].y+t[M].h/2,b=i.nodes.map((M,j)=>j).filter(M=>!i.nodes[M].isSide);b.forEach((M,j)=>{const N=i.nodes[M],V=t[M],U=b[j+1];if(U!==void 0&&(m.append(ya([[V.x,f(M)],[V.x,g(U)-2]],u)),N.shape==="raute"&&c.append(Pm(N.sideExit==="nein"?d:h,V.x+6,f(M)+13,N.sideExit==="nein"))),N.shape!=="raute")return;const re=V.x+V.w/2;if(c.append(Pm(N.sideExit==="ja"?d:h,re+5,V.y-6,N.sideExit==="ja")),N.backTo!==void 0){const K=g(N.backTo)-14;m.append(ya([[re,V.y],[re+22,V.y],[re+22,K],[V.x,K]],u))}else if(N.side!==void 0){const K=t[N.side],le=g(M)-14;m.append(ya([[re,V.y],[K.x-K.w/2-2,V.y]],u)),m.append(ya([[K.x,K.y-K.h/2],[K.x,le],[V.x,le]],u))}}),l.append(m,c);const x=i.nodes.map(()=>{}),v=[],w=[];let z;const I=Qe("p",{class:"learn-pap-status",role:"status"}),S=i.explanation?Qe("p",{class:"learn-explanation"}):void 0;S&&(S.innerHTML=je(i.explanation),S.hidden=!0);let k=!1;const P=()=>{v.forEach(M=>M.classList.remove("right","wrong")),I.textContent="",I.className="learn-pap-status"},D=M=>{const j=v[M];j.replaceChildren();const N=i.nodes[M],V=x[M],U=j0(N.shape,t[M]);if(U.setAttribute("class","learn-pap-shape"),V===void 0)U.setAttribute("fill","#f7f7f9"),U.setAttribute("stroke-dasharray","6 4"),j.append(U),j.setAttribute("aria-label",p("web_learn_pap_empty"));else{const re=i.nodes[V];U.setAttribute("fill",_0[re.shape]),j.append(U,Vg(re.text,t[M],N.shape)),j.setAttribute("aria-label",re.text)}},A=()=>{i.nodes.forEach((M,j)=>D(j)),w.forEach((M,j)=>{M.hidden=x.includes(j),M.classList.toggle("selected",z===j)})},B=(M,j)=>{if(k)return;const N=x.indexOf(j);N>=0&&(x[N]=void 0),x[M]=j,z=void 0,P(),A()};i.nodes.forEach((M,j)=>{const N=It("g",{class:"learn-pap-slot","data-slot":j,tabindex:0,role:"button"}),V=()=>{k||(z!==void 0?B(j,z):x[j]!==void 0&&(x[j]=void 0,P(),A()))};N.addEventListener("click",V),N.addEventListener("keydown",U=>{U.key!=="Enter"&&U.key!==" "||(U.preventDefault(),V())}),v.push(N),l.append(N)});const C=Qe("div",{class:"learn-pap-tray"});let L=!1;for(const M of aN(i.nodes.length)){const j=i.nodes[M],N=Qe("button",{class:"learn-pap-card",type:"button","aria-label":j.text},iN(j.shape,j.text));w[M]=N,N.addEventListener("click",()=>{L||k||(z=z===M?void 0:M,A())}),N.addEventListener("pointerdown",V=>{if(k)return;L=!1;let U;const re=ue=>{var Se;!U&&Math.hypot(ue.clientX-V.clientX,ue.clientY-V.clientY)<6||(U||(L=!0,U=N.cloneNode(!0),U.classList.add("learn-pap-ghost"),document.body.append(U),N.classList.add("dragging")),U.style.left=`${ue.clientX}px`,U.style.top=`${ue.clientY}px`,v.forEach(Fe=>Fe.classList.remove("over")),(Se=K(ue))==null||Se.classList.add("over"))},K=ue=>{var Fe;U&&(U.style.display="none");const Se=(Fe=document.elementFromPoint(ue.clientX,ue.clientY))==null?void 0:Fe.closest("[data-slot]");return U&&(U.style.display=""),Se&&v.includes(Se)?Se:void 0},le=ue=>{if(N.removeEventListener("pointermove",re),N.removeEventListener("pointerup",le),N.removeEventListener("pointercancel",le),v.forEach(Fe=>Fe.classList.remove("over")),N.classList.remove("dragging"),!U)return;const Se=ue.type==="pointerup"?K(ue):void 0;U.remove(),Se&&B(Number(Se.getAttribute("data-slot")),M),setTimeout(()=>L=!1)};N.setPointerCapture(V.pointerId),N.addEventListener("pointermove",re),N.addEventListener("pointerup",le),N.addEventListener("pointercancel",le)}),C.append(N)}const F=Qe("button",{class:"learn-pap-check"},p("web_learn_check")),Y=Qe("button",{},p("web_learn_cloze_solution")),ne=Qe("button",{},p("web_learn_cloze_again"));Y.hidden=!0,ne.hidden=!0;const X=()=>{k=!0,F.hidden=!0,Y.hidden=!0,ne.hidden=!1,C.hidden=!0,ae.classList.add("done"),S&&(S.hidden=!1)};F.addEventListener("click",()=>{const M=x.filter(V=>V===void 0).length;let j=0;x.forEach((V,U)=>{const re=V!==void 0&&oE(i,U,V);v[U].classList.toggle("right",re),v[U].classList.toggle("wrong",V!==void 0&&!re),re&&j++});const N=j===i.nodes.length;I.textContent=N?p("web_learn_pap_all_right"):M?p("web_learn_pap_missing_fmt",M):p("web_learn_pap_score_fmt",j,i.nodes.length),I.className=`learn-pap-status ${N?"right":"wrong"}`,N?X():M||(Y.hidden=!1)}),Y.addEventListener("click",()=>{i.nodes.forEach((M,j)=>x[j]=j),z=void 0,A(),P(),v.forEach(M=>M.classList.add("shown")),X()}),ne.addEventListener("click",()=>{i.nodes.forEach((M,j)=>x[j]=void 0),k=!1,z=void 0,v.forEach(M=>M.classList.remove("shown")),P(),A(),F.hidden=!1,ne.hidden=!0,C.hidden=!1,ae.classList.remove("done"),S&&(S.hidden=!0)}),A();const he=Qe("div",{class:"learn-pap-left"});he.append(l),i.legend&&he.append(sN());const ae=Qe("div",{class:"learn-pap-work"},he,C);return e.append(ae,Qe("div",{class:"learn-pap-actions"},F,Y,ne),I),S&&e.append(S),e}const oN="code, pre, a, button, h1, h2, h3, h4, strong, .term, .ui-pointer";function Dm(i,e){var s;const t=[...i.querySelectorAll(".learn-text")],n=new Set;for(const r of t.flatMap(o=>[...o.querySelectorAll("strong")])){const o=am(e),l=o==null?void 0:o.exec(r.textContent??""),u=l?sm(e,l[0]):void 0;u&&n.add(u)}let a=e.filter(r=>!n.has(r));for(const r of t){const o=document.createTreeWalker(r,NodeFilter.SHOW_TEXT),l=[];for(;o.nextNode();){const u=o.currentNode;(s=u.parentElement)!=null&&s.closest(oN)||l.push(u)}for(let u of l)for(;;){const m=am(a),c=m==null?void 0:m.exec(u.data),d=c?sm(a,c[0]):void 0;if(!c||!d)break;const h=u.splitText(c.index);u=h.splitText(c[0].length);const g=document.createElement("span");g.className="term",g.tabIndex=0,g.setAttribute("role","button"),g.setAttribute("aria-describedby","term-tip"),g.dataset.term=d.term,g.dataset.text=d.text,h.replaceWith(g),g.append(h),a=a.filter(f=>f!==d)}}}function lN(i){const e=document.createElement("div");e.id="term-tip",e.className="term-tip",e.setAttribute("role","tooltip"),e.hidden=!0,document.body.append(e);let t,n=!1;const a=o=>{t=o,e.replaceChildren();const l=document.createElement("strong");l.textContent=o.dataset.term??"",e.append(l,document.createTextNode(" "+(o.dataset.text??""))),e.hidden=!1;const u=o.getBoundingClientRect(),m=e.offsetWidth,c=e.offsetHeight,d=Math.max(8,Math.min(u.left,window.innerWidth-m-8)),h=u.bottom+6;e.style.left=`${d}px`,e.style.top=`${h+c>window.innerHeight-8?Math.max(8,u.top-c-6):h}px`,o.setAttribute("aria-expanded","true")},s=()=>{t==null||t.setAttribute("aria-expanded","false"),t=void 0,n=!1,e.hidden=!0},r=o=>{var l,u;return((u=(l=o.target)==null?void 0:l.closest)==null?void 0:u.call(l,".term"))??void 0};return i.addEventListener("pointerover",o=>{const l=r(o);l&&o.pointerType==="mouse"&&!n&&a(l)}),i.addEventListener("pointerout",o=>{r(o)&&o.pointerType==="mouse"&&!n&&s()}),i.addEventListener("click",o=>{const l=r(o);if(l){if(n&&t===l)return s();a(l),n=!0}}),i.addEventListener("focusin",o=>{const l=r(o);l&&!n&&a(l)}),i.addEventListener("focusout",o=>{r(o)&&!n&&s()}),i.addEventListener("keydown",o=>{const l=r(o);o.key==="Escape"&&t?s():l&&(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),l.click())}),i.addEventListener("scroll",s,!0),document.addEventListener("pointerdown",o=>{t&&!r(o)&&!e.contains(o.target)&&s()}),{hide:s}}const qg={leiste:".topbar > .toolbar",editor:".editor-rail, .columns > .app",werkzeuge:".diagram-tools",dateien:".files-rail, .files",codelive:".live-rail, .livecode",ausfuehren:"[data-run=play]",konsole:".livecode .console",einzelschritt:"[data-run=step]",elemente:".palette",struktogramm:".canvas",objektinspektor:".inspector",reiter:".tabs",titel:".caption",neu:"[data-action=new]",oeffnen:"[data-action=open]",speichern:"[data-action=save]",exportieren:"[data-action=export]",rueckgaengig:"[data-action=undo]",loeschen:"[data-action=delete]",textgroesse:"[data-action=settings]",einstellungen:"[data-action=settings]",lernen:".learn .learn-hide",code:"[data-action=code]",simulation:"[data-action=simulate]"},Qg=new Set(["editor","werkzeuge","elemente","struktogramm","objektinspektor","reiter","titel","rueckgaengig","loeschen","exportieren","code","simulation"]),Ug=new Set(["ausfuehren","konsole","einzelschritt"]);function dr(i,e){return[...i.querySelectorAll(".ui-pointer")].some(t=>e.has(t.dataset.target??""))}function Bm(i){return i==="elemente"?["editor","palette"]:Qg.has(i)?["editor"]:i==="codelive"||Ug.has(i)?["livecode"]:i==="dateien"?["files"]:[]}function uN(i){return dr(i,new Set(["elemente"]))}function mN(i){return dr(i,new Set(["dateien"]))}function cN(i){return dr(i,Qg)}function dN(i){return dr(i,Ug)}function Om(i){for(const e of i.querySelectorAll('a[href^="#zeige-"]')){const t=e.getAttribute("href").slice(7);if(!(t in qg))continue;const n=document.createElement("span");n.className="ui-pointer",n.tabIndex=0,n.setAttribute("role","button"),n.dataset.target=t,n.append(...e.childNodes),e.replaceWith(n)}}function hN(i,e=()=>()=>{}){let t,n,a,s,r;const o=()=>{t==null||t.classList.remove("ui-spot"),t=void 0,window.clearTimeout(n)},l=(h,g)=>{o();const f=[...document.querySelectorAll(qg[h.dataset.target??""]??":not(*)")].find(b=>b.getClientRects().length>0);f&&(t=f,f.classList.add("ui-spot"),g&&(n=window.setTimeout(o,2500)))},u=(h,g)=>requestAnimationFrame(()=>{l(h,g),t==null||t.scrollIntoView({block:"nearest",inline:"nearest"})}),m=()=>{window.clearTimeout(s),window.clearTimeout(r),a==null||a(),a=void 0},c=h=>{window.clearTimeout(s),window.clearTimeout(r),a=void 0,e(Bm(h.dataset.target??"")),l(h,!0),u(h,!0)},d=h=>{var g,f;return((f=(g=h.target)==null?void 0:g.closest)==null?void 0:f.call(g,".ui-pointer"))??void 0};return i.addEventListener("pointerover",h=>{const g=d(h);!g||h.pointerType!=="mouse"||(window.clearTimeout(r),l(g,!1),window.clearTimeout(s),s=window.setTimeout(()=>{if(a)return;const f=Bm(g.dataset.target??"");f.length!==0&&(a=e(f),u(g,!1))},250))}),i.addEventListener("pointerout",h=>{!d(h)||h.pointerType!=="mouse"||(o(),window.clearTimeout(s),window.clearTimeout(r),r=window.setTimeout(m,400))}),i.addEventListener("click",h=>{const g=d(h);g&&c(g)}),i.addEventListener("focusin",h=>{const g=d(h);g&&l(g,!1)}),i.addEventListener("focusout",h=>{d(h)&&o()}),i.addEventListener("keydown",h=>{const g=d(h);g&&(h.key==="Enter"||h.key===" ")&&(h.preventDefault(),c(g))}),{off:()=>{m(),o()}}}const At='',gN=()=>{const i=[];for(const e of zt){const t=i.at(-1);t&&t.name===e.section?t.lessons.push(e):i.push({name:e.section,lessons:[e]})}return i};function _(i,e={},...t){const n=document.createElement(i);for(const[a,s]of Object.entries(e))n.setAttribute(a,s);return n.append(...t),n}function Ve(i,e,t){const n=_(i,e);return n.innerHTML=t,n}const pN=i=>p(`element_${T[i]}`);function fN(i){return{caption:i,elements:[Ce(T.anweisung,{textLines:["ø"]})]}}function Mm(i){const e=i.start?di(i.start):void 0;return e?{...e,caption:e.caption||i.title}:fN(i.title)}class bN{constructor(e){y(this,"element");y(this,"tab","lessons");y(this,"returnTo");y(this,"lessonId");y(this,"taskId");y(this,"body");y(this,"tips");y(this,"pointers");this.host=e,this.element=_("aside",{class:"learn","aria-label":p("web_learn_title")}),this.tips=lN(this.element),this.pointers=hN(this.element,t=>this.host.reveal(t)),Bs(bm(o1())),this.restore()}restore(){const e=xe.view();e&&(this.tab=["lessons","tasks","reference"].find(t=>t===e.tab)??"lessons",this.lessonId=zt.some(t=>t.id===e.lesson)?e.lesson:void 0,this.taskId=Pn.some(t=>t.id===e.task)?e.task:void 0),this.render()}render(){this.tips.hide(),this.pointers.off(),Bs(bm(o1()));const e=_("div",{class:"segmented learn-tabs",role:"tablist"});for(const[a,s]of[["lessons",p("web_learn_lessons")],["tasks",p("web_learn_tasks")],["reference",p("web_learn_reference")]]){const r=_("button",{role:"tab","aria-pressed":String(this.tab===a),"data-learn-tab":a},s);r.addEventListener("click",()=>{this.tab===a&&(a==="lessons"&&(this.lessonId=void 0),a==="tasks"&&(this.taskId=void 0)),this.tab=a,this.persist(),this.render()}),e.append(r)}const t=Ve("button",{class:"learn-hide",title:p("web_learn_hide"),"aria-label":p("web_learn_hide")},At);t.addEventListener("click",()=>this.host.collapse());const n=_("div",{class:"learn-head"},e,t);if(this.body=_("div",{class:"learn-body"}),this.element.replaceChildren(n,this.body),this.tab==="lessons"){const a=zt.find(s=>s.id===this.lessonId);a?this.renderLesson(a):this.renderLessonList()}else if(this.tab==="tasks"){const a=Pn.find(s=>s.id===this.taskId);a?this.renderTask(a):this.renderTaskList()}else{const a=es.map(r=>`- **${r.term}:** ${r.text}`).join(` + `;const e=a=>this.element.querySelector(a);this.buttons={play:e("[data-sim=play]"),pause:e("[data-sim=pause]"),step:e("[data-sim=step]"),stop:e("[data-sim=stop]")},this.buttons.play.addEventListener("click",()=>this.play()),this.buttons.pause.addEventListener("click",()=>this.pause()),this.buttons.step.addEventListener("click",()=>this.step()),this.buttons.stop.addEventListener("click",()=>this.reset()),this.editButton=e(".sim-edit"),this.editButton.addEventListener("click",()=>this.onEdit());const t=e("[data-sim=highlight]");t.value=this.highlightMode,t.addEventListener("change",()=>{this.highlightMode=t.value,Sm(km,this.highlightMode)});const n=e("[data-sim=delay]");n.value=this.delay,n.addEventListener("change",()=>{this.delay=n.value,Sm(Nr,this.delay)}),this.inputSection=e(".sim-input > div"),this.trace=e(".sim-trace"),this.variables=e(".sim-vars"),this.output=e(".sim-output"),this.notice=e(".sim-notice")}collectOutput(){const e=this.engine.state.outputLines;for(;this.printedr.localeCompare(o));if(n.length===0)this.variables.innerHTML=`

${Oe(p("simulation_variables_placeholder"))}

`;else{const r=document.createElement("table");for(const o of n){const l=r.insertRow();l.insertCell().textContent=o;const u=e.variables.get(o),m=l.insertCell();u.kind==="grid"?m.append(Rg(u)):m.textContent=_e(u)}this.variables.replaceChildren(r)}e.outputLines.length===0&&e.files.size===0?this.output.innerHTML=`

${Oe(p("simulation_output_placeholder"))}

`:(this.output.replaceChildren(...e.outputLines.map(r=>{const o=document.createElement("div");return o.textContent=r,o}),...Fg(e.files)),this.output.scrollTop=this.output.scrollHeight)}updateInput(){const e=this.engine.state.inputRequest,t=this.inputSection;if(t.parentElement.classList.toggle("active",!!e),!e){t.innerHTML=`

${Oe(p("simulation_input_placeholder"))}

`;return}let n=t.querySelector("form");if(!n){n=document.createElement("form"),n.innerHTML=`

`;const l=n.querySelector("input");n.addEventListener("submit",u=>{u.preventDefault(),this.submitInput(l)}),t.replaceChildren(n),requestAnimationFrame(()=>l.focus())}const a=this.engine.state.outputLines;n.querySelector(".sim-prompt").textContent=e.prompt||(a[a.length-1]??"");const s=n.querySelector("input");s.inputMode=e.valueType==="string"||e.valueType==="boolean"?"text":"decimal";const r=this.engine.state.inputErrorNotice,o=n.querySelector(".sim-input-error");o.textContent=r?i1(r):"",o.hidden=!r}}function Rg(i){const e=document.createElement("table");e.className="sim-grid";for(const t of i.value){const n=e.insertRow();for(const a of t){const s=n.insertCell();s.textContent=String(a),a===!0&&(s.className="sim-grid-true")}}return e}const T1=Array.from("ABCDEFGHIJKLMNOPQRSTUVWXYZ"),Vn=360/T1.length,NN="http://www.w3.org/2000/svg";function Re(i,e={},...t){const n=document.createElement(i);for(const[a,s]of Object.entries(e))n.setAttribute(a,s);return n.append(...t),n}function vt(i,e={},t){const n=document.createElementNS(NN,i);for(const[a,s]of Object.entries(e))n.setAttribute(a,String(s));return t!==void 0&&(n.textContent=t),n}function FN(i,e){const t=(e%26+26)%26;return Array.from(i).map(n=>{const a=n.charCodeAt(0);return a>=65&&a<=90?String.fromCharCode((a-65+t)%26+65):a>=97&&a<=122?String.fromCharCode((a-97+t)%26+97):n}).join("")}function Tm(i,e){const t=vt("g",{class:e}),n=T1.map((a,s)=>{const r=vt("g",{transform:`rotate(${s*Vn})`});return r.append(vt("text",{x:0,y:-i,"text-anchor":"middle","dominant-baseline":"central"},a)),t.append(r),r});return{group:t,cells:n}}function RN(i,e){let t=i,n=!1,a=-t*Vn;const s=Re("section",{class:"learn-game learn-caesar"});s.append(Re("div",{class:"learn-game-head"},Re("strong",{},p("web_learn_caesar_title")))),s.append(Re("p",{class:"learn-game-status"},p("web_learn_caesar_hint")));const r=vt("svg",{viewBox:"-200 -200 400 400",class:"learn-caesar-disc",role:"img"});r.append(vt("circle",{r:196,class:"outer-disc"})),r.append(vt("path",{d:JN(196,92,Vn/2),class:"window"}));const o=Tm(168,"outer-letters");r.append(o.group);for(let A=0;A{o.cells.forEach((L,F)=>L.classList.toggle("marked",F===A)),u.cells.forEach((L,F)=>L.classList.toggle("marked",A!==void 0&&F===(A+t)%26))},k=()=>{m.textContent=String(t),l.setAttribute("transform",`rotate(${a})`),r.setAttribute("aria-label",p("web_learn_caesar_key_fmt",t)),x.textContent=p(n?"web_learn_caesar_secret":"web_learn_caesar_plain"),w.textContent=p(n?"web_learn_caesar_plain":"web_learn_caesar_secret"),f.classList.toggle("active",!n),b.classList.toggle("active",n),z.textContent=FN(v.value,n?-t:t)||" ";const A=Array.from(v.value.toUpperCase()).reverse().find(F=>T1.includes(F));if(A===void 0)return S();const L=T1.indexOf(A);S(n?(L-t+26)%26:L)},D=A=>{t=(A%26+26)%26,a=-t*Vn,k()};c.addEventListener("click",()=>D(t-1)),d.addEventListener("click",()=>D(t+1)),f.addEventListener("click",()=>{var A;n&&(v.value=((A=z.textContent)==null?void 0:A.trim())??""),n=!1,k()}),b.addEventListener("click",()=>{var A;n||(v.value=((A=z.textContent)==null?void 0:A.trim())??""),n=!0,k()}),v.addEventListener("input",k),o.cells.forEach((A,L)=>A.addEventListener("click",()=>S(L)));let P;const C=A=>{const L=r.getBoundingClientRect();return Math.atan2(A.clientY-(L.top+L.height/2),A.clientX-(L.left+L.width/2))*180/Math.PI};l.addEventListener("pointerdown",A=>{const L=A;P=C(L)-a,l.classList.add("dragging"),r.setPointerCapture(L.pointerId),L.preventDefault()}),r.addEventListener("pointermove",A=>{if(P===void 0)return;a=C(A)-P,l.setAttribute("transform",`rotate(${a})`);const L=Math.round(-a/Vn);if((L%26+26)%26!==t){t=(L%26+26)%26;const F=a;k(),a=F,l.setAttribute("transform",`rotate(${a})`)}});const B=()=>{P!==void 0&&(P=void 0,l.classList.remove("dragging"),D(t))};return r.addEventListener("pointerup",B),r.addEventListener("pointercancel",B),k(),s}function JN(i,e,t){const n=(a,s)=>{const r=(s-90)*Math.PI/180;return`${(a*Math.cos(r)).toFixed(2)} ${(a*Math.sin(r)).toFixed(2)}`};return`M ${n(i,-t)} A ${i} ${i} 0 0 1 ${n(i,t)} L ${n(e,t)} A ${e} ${e} 0 0 0 ${n(e,-t)} Z`}const T0=i=>p(`web_visubot_part_${i}`),Jg=new WeakMap;function Gg(i,e,t,n){const a=document.createElement("div");a.className="visubot-model";const s=document.createElement("div");s.className="visubot-stage";const r=document.createElement("div");r.className="visubot-part-label",r.hidden=!0,s.append(r);const o=(c,d,h)=>{r.hidden=!1,r.textContent=T0(c),r.style.left=`${Math.min(d+12,s.clientWidth-140)}px`,r.style.top=`${h+12}px`},l=document.createElement("p");l.className="visubot-model-hint hint",l.textContent=p("web_visubot_tap_part"),l.hidden=!!n,a.append(s,l);const u=ee(async()=>{const{Robot3D:c}=await import("./robot3d-YfqH2eRc.js");return{Robot3D:c}},[],import.meta.url).then(({Robot3D:c})=>{const d=new c(s);d.showcase(),d.highlight(i),i.includes("leds")&&d.setLed([40,90,255]),d.focusOn([],e==="unten"||e==="bottom"?"":e,!1,1),d.focusOn(i,e,t);let h;return s.addEventListener("pointerdown",g=>h={x:g.clientX,y:g.clientY}),s.addEventListener("pointerup",g=>{if(!h||Math.hypot(g.clientX-h.x,g.clientY-h.y)>5)return;const f=d.partAt(g.clientX,g.clientY);if(!f)return;if(n)return n(f);d.highlight(f);const b=s.getBoundingClientRect();o(f,g.clientX-b.left,g.clientY-b.top)}),s.addEventListener("pointermove",g=>{if(g.pointerType!=="mouse"||n)return;const f=d.partAt(g.clientX,g.clientY);if(r.hidden=!f,!f)return;const b=s.getBoundingClientRect();o(f,g.clientX-b.left,g.clientY-b.top)}),s.addEventListener("pointerleave",()=>r.hidden=!0),d}).catch(c=>{console.error(c),s.textContent=p("web_visubot_no_3d")}),m={box:a,ready:u,focus:i,view:e};return Jg.set(a,m),m}function GN(i,e,t=!1){return Gg(i,e,t).box}function HN(i){const e=i.querySelector(".visubot-model"),t=e&&Jg.get(e);for(const n of i.querySelectorAll("[data-robot-part]")){const a=(n.dataset.robotPart??"").split(",").filter(Boolean);if(n.title=a.map(T0).join(", "),!t)continue;const s=()=>void t.ready.then(o=>o==null?void 0:o.highlight(a)),r=()=>void t.ready.then(o=>o==null?void 0:o.highlight(t.focus));n.addEventListener("mouseenter",s),n.addEventListener("focus",s),n.addEventListener("mouseleave",r),n.addEventListener("blur",r),n.addEventListener("click",()=>{t.ready.then(o=>{o==null||o.highlight(a),o==null||o.focusOn(a,t.view)}),t.box.scrollIntoView({block:"nearest",behavior:"smooth"})})}}function VN(i,e){let t=0;const n=document.createElement("div");n.className="visubot-quiz-question";const a=document.createElement("p");a.className="visubot-quiz-feedback",a.setAttribute("aria-live","polite");const s=()=>{n.innerHTML=jn(`**${t+1}/${i.length}** ${i[t].question}`)},r=Gg([],void 0,!1,l=>{if(!(t>=i.length)){if(r.ready.then(u=>u==null?void 0:u.highlight(l)),l!==i[t].part){a.className="visubot-quiz-feedback wrong",a.textContent=p("web_visubot_quiz_wrong_fmt",T0(l));return}t++,a.className="visubot-quiz-feedback right",t{u.forEach(v=>{window.clearTimeout(v),window.clearInterval(v)}),u=[]},c=()=>{a.textContent=`${p("web_game_round_fmt",o+1,r)} · ${p("web_game_score_fmt",l)}`},d=()=>{const v=$("button",{class:"primary"},o+1{o++,o{const v=i.rounds[o],w=i.seconds,z=$("div",{class:"learn-bomb-fuse"},$("span",{})),I=$("span",{class:"learn-bomb-time"}),S=$("div",{class:"learn-bomb","aria-live":"polite"},$("span",{class:"learn-bomb-icon","aria-hidden":"true"},"💣"),I,z),k=$("div",{class:"learn-game-feedback",role:"status"}),D=v.wrongPart!==void 0,P=[],C=v.code.split(` +`).map((X,he)=>{if(!D){const M=$("button",{class:"ln",type:"button"},X||" ");return M.disabled=!X.trim(),P.push({button:M,line:he+1,right:he+1===v.wrongLine}),M}const ae=$("div",{class:"ln parts"});X.trim()||ae.append(" ");for(const M of fg(X)){if(!M.part){ae.append(M.text);continue}const j=$("button",{class:"part",type:"button"},M.text);P.push({button:j,line:he+1,right:he+1===v.wrongLine&&M.text===v.wrongPart}),ae.append(j)}return ae});for(const X of P)X.button.addEventListener("click",()=>F(X.right?"right":X.line===v.wrongLine?"part":"wrong",X.button));const B=$("div",{class:`learn-game-code learn-bomb-code mono${D?" by-parts":""}`,dir:"ltr"},...C),A=Date.now(),L=()=>{if(!t.isConnected&&Date.now()-A>1e3)return m();const X=Math.max(0,w-(Date.now()-A)/1e3);I.textContent=p("web_game_time_fmt",Math.ceil(X)),z.firstChild.style.width=`${X/w*100}%`,S.classList.toggle("hurry",X<=5),X<=0&&F("time")},F=(X,he)=>{m();for(const j of P)j.button.disabled=!0,j.right&&j.button.classList.add("right");D&&C[v.wrongLine-1].classList.add("right"),he&&X!=="right"&&he.classList.add("wrong");const ae=X==="right";ae&&l++,c(),S.classList.add(ae?"defused":"boom"),S.firstChild.textContent=ae?"✂️":"💥",k.className=`learn-game-feedback ${ae?"right":"wrong"}`;const M=d();k.replaceChildren($("p",{},p(ae?"web_game_defused":X==="time"?"web_game_boom_time":X==="part"?"web_game_boom_part":D?"web_game_boom_wrong_part":"web_game_boom_wrong")),Gn("div",{class:"learn-game-explain"},v.explanation),$("p",{class:"learn-bomb-fix"},`${p("web_game_fix")} `,$("code",{},v.fix.trim())),M),M.focus({preventScroll:!0})},Y=Gn("p",{class:"learn-game-question"},v.question);D&&Y.append(" ",$("span",{class:"learn-bomb-hint"},p("web_game_bomb_parts_hint"))),s.replaceChildren(S,Y,B,k),L();const ne=window.setInterval(L,200);u.push(ne)},g=()=>{const v=i.rounds[o],w=[];v.code.trim()&&w.push(jm(v.code).element),w.push(Gn("p",{class:"learn-game-question"},v.question),$("p",{class:"learn-order-hint"},p("web_game_order_hint")));const z=$("div",{class:"learn-game-options learn-order"}),I=$("div",{class:"learn-game-feedback",role:"status"});let S=0;const k=QN(v.options.length).map(P=>{const C=$("span",{class:"learn-order-badge","aria-hidden":"true"}),B=$("span",{});B.innerHTML=je(v.options[P].text);const A=$("button",{},C,B);return A.addEventListener("click",()=>{if(P!==S)return A.classList.add("wrong"),D(!1);A.classList.add("right"),C.textContent=String(++S),A.disabled=!0,S===v.options.length&&D(!0)}),z.append(A),{k:P,b:A,badge:C}}),D=P=>{for(const{k:B,b:A,badge:L}of[...k].sort((F,Y)=>F.k-Y.k))A.disabled=!0,L.textContent=String(B+1),z.append(A);P&&l++,c(),I.className=`learn-game-feedback ${P?"right":"wrong"}`;const C=d();I.replaceChildren($("p",{},p(P?"web_game_right":"web_game_wrong_short")),Gn("div",{class:"learn-game-explain"},v.explanation),C),C.focus({preventScroll:!0})};s.replaceChildren(...w,z,I)},f=()=>{if(m(),i.kind==="bombe"||i.kind==="reihenfolge"){c(),i.kind==="bombe"?h():g();return}const v=i.rounds[o];c();const w=jm(v.code),z=[];let I;i.kind==="zuhoerer"?(I=UN(xg(v.code),w),z.push($("div",{class:"learn-swing-row"},w.element,I.element)),v.clicks.length&&z.push($("p",{class:"learn-swing-clicks"},`${p("web_game_clicks")} `,...v.clicks.flatMap((C,B)=>[...B?[" → "]:[],$("code",{},C)])))):v.code.trim()&&z.push(w.element),z.push(Gn("p",{class:"learn-game-question"},v.question));const S=$("div",{class:`learn-game-options ${i.kind==="layout"?"pictures":""}`}),k=$("div",{class:"learn-game-feedback",role:"status"}),D=v.options.map(C=>{const B=$("button",{});return i.kind==="layout"?B.append($N(C.text)):C.text.includes(` +`)?B.append(YN(C.text)):B.innerHTML=je(C.text),B.addEventListener("click",()=>P(C.right,B)),S.append(B),B}),P=(C,B)=>{D.forEach((L,F)=>{L.disabled=!0,v.options[F].right&&L.classList.add("right")}),C||B.classList.add("wrong"),C&&l++,c(),k.className=`learn-game-feedback ${C?"right":"wrong"}`;const A=d();k.replaceChildren($("p",{},p(C?"web_game_right":"web_game_wrong_short")),Gn("div",{class:"learn-game-explain"},v.explanation)),k.append(A),I&&(u=I.replay(v.clicks,()=>A.before($("p",{class:"learn-swing-try"},p("web_game_try"))))),A.focus({preventScroll:!0})};s.replaceChildren(...z,S,k)},b=()=>{m(),a.textContent="";const v=$("button",{class:"primary"},p("web_game_again"));v.addEventListener("click",()=>{o=l=0,f()}),s.replaceChildren($("p",{class:"learn-game-result"},p("web_game_done_fmt",l,r)),$("p",{},p(l===r?"web_game_perfect":l>=r*.7?"web_game_good":"web_game_practice_short")),v)},x=$("button",{class:"primary"},p("web_game_start"));return x.addEventListener("click",f),s.append(Gn("p",{},i.intro),x),t}function QN(i){const e=[...Array(i).keys()];for(;e.every((t,n)=>t===n);)for(let t=i-1;t>0;t--){const n=Math.floor(Math.random()*(t+1));[e[t],e[n]]=[e[n],e[t]]}return e}function jm(i){const e=i.split(` +`).map(n=>$("div",{class:"ln"},n||" "));return{element:$("pre",{class:"learn-game-code mono",dir:"ltr"},...e),highlight(n,a){e.forEach((s,r)=>s.classList.toggle("hit",n!==void 0&&r>=n&&r<=(a??n)))}}}function UN(i,e){const t=vg(i),n=$("div",{class:"learn-swing-window",dir:"ltr"});n.append($("div",{class:"learn-swing-title"},i.title||" "));const a=$("div",{class:"learn-swing-body"}),s=new Map;for(const c of i.labels){const d=$("div",{class:"learn-swing-label"},t.texts[c.name]);s.set(c.name,d),a.append(d)}const r=i.buttons.map(c=>{const d=$("button",{class:"learn-swing-button",disabled:""},t.texts[c.name]);return s.set(c.name,d),a.append(d),d}),o=$("p",{class:"learn-swing-event",role:"status"}),l=$("pre",{class:"learn-swing-console mono",hidden:""});n.append(a,o,l);const u=c=>{var h,g;const d=s.get(c.button);d.classList.add("pressed"),window.setTimeout(()=>d.classList.remove("pressed"),350),e.highlight((h=c.listener)==null?void 0:h.from,(g=c.listener)==null?void 0:g.to),o.textContent=c.listener?p("web_game_event_fmt",d.textContent??""):p("web_game_nobody"),o.className=`learn-swing-event ${c.listener?"heard":"nobody"}`;for(const[f,b]of Object.entries(c.texts)){const x=s.get(f);x&&x.textContent!==b&&(x.textContent=b,x.classList.remove("changed"),x.offsetWidth,x.classList.add("changed"))}c.console.length&&(l.hidden=!1,l.textContent+=c.console.map(f=>`${f} +`).join(""))},m=c=>u(yg(i,t,c));return{element:n,replay(c,d){const h=c.map((g,f)=>window.setTimeout(()=>m(g),(f+.3)*_m));return h.push(window.setTimeout(()=>{i.buttons.forEach((g,f)=>{r[f].disabled=!1,r[f].addEventListener("click",()=>u(wg(i,t,g.name)))}),d()},(c.length+.3)*_m)),h}}}function YN(i){return $("pre",{class:"learn-game-file mono",dir:"ltr"},i)}function $N(i){const e=bg(i),t=$("div",{class:"learn-layout-window",dir:"ltr"},$("div",{class:"learn-layout-title"})),n=$("div",{class:`learn-layout-body ${e.kind}`}),a=(s,r)=>$("span",{class:"learn-layout-cell",...r?{style:`grid-area:${r}`}:{}},s);if(e.kind==="border")for(const[s,r]of Object.entries(e.areas))n.append(a(r,s));else if(e.kind==="grid"){const s=Math.max(...e.rows.map(r=>r.length));n.style.gridTemplateColumns=`repeat(${s}, 1fr)`;for(const r of e.rows)for(let o=0;oa(r))));return t.append(n),t}function G(i,e={},...t){const n=document.createElement(i);for(const[a,s]of Object.entries(e))n.setAttribute(a,s);return n.append(...t),n}function an(i,e,t){const n=G(i,e);return n.innerHTML=je(t),n}function Am(i){return G("pre",{class:"learn-game-code mono",dir:"ltr"},...i.split(` +`).map(e=>G("div",{class:"ln"},e||" ")))}function KN(i,e){const t=G("section",{class:"learn-game learn-rescue"}),n=G("div",{class:"learn-game-head"});n.append(G("img",{src:e,alt:"",width:"40",height:"40"}),G("strong",{},i.title));const a=i.stations.length,s=i.stations.map(()=>G("span",{class:"learn-rescue-dot"})),r=G("img",{class:"learn-rescue-ludwig",src:e,alt:"",width:"32",height:"32"}),o=G("span",{class:"learn-rescue-tower","aria-hidden":"true"},"🏰",G("span",{class:"learn-rescue-zora"},"🐐"),G("span",{class:"learn-rescue-fox"},"🦊")),l=G("span",{class:"learn-rescue-free"},"🐐"),u=G("div",{class:"learn-rescue-path","aria-hidden":"true"},r,...s,o),m=G("p",{class:"learn-game-status"}),c=G("div",{class:"learn-game-stage"}),d=Hg(i);t.append(n,u,m,c);let h=0;const g=()=>{s.forEach((I,S)=>I.classList.toggle("done",S{const I=[...i.alphabet].map((S,k)=>G("span",{class:"learn-rescue-letter"},G("b",{},S),G("small",{},String(k))));return{element:G("div",{class:"learn-rescue-alphabet mono",dir:"ltr"},...I),cells:I}},b=I=>{const S=i.stations[I];m.textContent=p("web_learn_rescue_station_fmt",I+1,a,S.name);const k=f(),D=G("input",{type:"text",inputmode:"numeric",autocomplete:"off",class:"learn-rescue-number mono","aria-label":p("web_learn_rescue_number")}),P=G("button",{class:"primary"},p("web_learn_check")),C=G("div",{class:"learn-game-feedback",role:"status"}),B=()=>{const A=D.value.trim();if(!/^-?\d+$/.test(A)){C.className="learn-game-feedback wrong",C.replaceChildren(G("p",{},p("web_learn_rescue_not_number")));return}if(Number(A)!==S.answer){C.className="learn-game-feedback wrong",C.replaceChildren(G("p",{},p("web_learn_rescue_wrong")),...S.hint?[an("div",{class:"learn-game-explain"},`**${p("web_learn_hint")}:** ${S.hint}`)]:[]),D.select();return}D.disabled=P.disabled=!0;const L=i.alphabet.charAt(S.answer);k.cells[S.answer].classList.add("hit"),d.give(S.row,S.col,L),h++,g();const F=I+1===a,Y=G("button",{class:"primary"},p(F?"web_learn_rescue_to_crossword":"web_game_next"));Y.addEventListener("click",()=>F?x():b(I+1)),C.className="learn-game-feedback right",C.replaceChildren(G("p",{},p("web_game_right")),G("p",{class:"learn-rescue-charat mono",dir:"ltr"},`alphabet.charAt(${S.answer})`,G("span",{"aria-hidden":"true"}," → "),G("code",{},`'${L}'`)),an("div",{class:"learn-game-explain"},S.explanation),G("p",{class:"learn-rescue-moved"},p("web_learn_rescue_letter_moved")),Y),Y.focus({preventScroll:!0})};P.addEventListener("click",B),D.addEventListener("keydown",A=>{A.key==="Enter"&&B()}),c.replaceChildren(Am(S.code),an("p",{class:"learn-game-question"},S.question),G("div",{class:"learn-rescue-answer"},D,P),C,G("p",{class:"learn-rescue-label"},p("web_learn_rescue_alphabet")),Am(`String alphabet = "${i.alphabet}";`),k.element,d.element),D.focus({preventScroll:!0})},x=()=>{m.textContent=p("web_learn_rescue_crossword");const I=G("div",{class:"learn-game-feedback",role:"status"}),S=G("button",{class:"primary"},p("web_learn_check"));S.addEventListener("click",()=>{if(!d.check()){I.className="learn-game-feedback wrong",I.replaceChildren(G("p",{},p("web_learn_rescue_cw_wrong")));return}S.disabled=!0,d.lock();const k=G("button",{class:"primary"},p("web_learn_rescue_to_gate"));k.addEventListener("click",v),I.className="learn-game-feedback right",I.replaceChildren(G("p",{},p("web_learn_rescue_cw_done")),k),k.focus({preventScroll:!0})}),d.unlock(),c.replaceChildren(an("p",{},i.crosswordText),d.element,S,I),d.focusFirst()},v=()=>{m.textContent=p("web_learn_rescue_gate");const I=G("input",{type:"text",autocomplete:"off",autocapitalize:"off",spellcheck:"false",class:"learn-rescue-word mono",size:String(i.keyword.length+2),"aria-label":p("web_learn_rescue_word")}),S=i.gateCode.split(` +`).map(C=>{const B=C.indexOf(As);return B<0?G("div",{class:"ln"},C||" "):G("div",{class:"ln"},C.slice(0,B),I,C.slice(B+As.length))}),k=G("button",{class:"primary"},p("web_learn_rescue_open")),D=G("div",{class:"learn-game-feedback",role:"status"}),P=()=>{const C=I.value.trim();if(C!==i.keyword){const A=C.toUpperCase()===i.keyword.toUpperCase();D.className="learn-game-feedback wrong",D.replaceChildren(G("p",{},p(A?"web_learn_rescue_gate_case":"web_learn_rescue_gate_wrong"))),I.select();return}I.disabled=k.disabled=!0,t.classList.add("freed"),r.after(l),m.textContent="";const B=G("button",{},p("web_game_again"));B.addEventListener("click",w),D.className="learn-game-feedback right",D.replaceChildren(G("p",{},p("web_learn_rescue_freed")),an("div",{class:"learn-game-explain"},i.end),B)};k.addEventListener("click",P),I.addEventListener("keydown",C=>{C.key==="Enter"&&P()}),c.replaceChildren(an("p",{},i.gateText),G("div",{class:"learn-game-code mono learn-rescue-gate",dir:"ltr"},...S),k,D),I.focus({preventScroll:!0})},w=()=>{h=0,t.classList.remove("freed"),l.remove(),d.reset(),g(),b(0)},z=G("button",{class:"primary"},p("web_game_start"));return z.addEventListener("click",w),c.append(an("p",{},i.intro),z),t}function XN(i,e){const t=G("section",{class:"learn-game learn-rescue learn-crossword-game"}),n=G("div",{class:"learn-game-head"});n.append(G("img",{src:e,alt:"",width:"40",height:"40"}),G("strong",{},i.title));const a=Hg(i),s=G("div",{class:"learn-game-feedback",role:"status"}),r=G("button",{class:"primary"},p("web_learn_check"));return r.addEventListener("click",()=>{if(!a.check()){s.className="learn-game-feedback wrong",s.replaceChildren(G("p",{},p("web_learn_rescue_cw_wrong")));return}r.disabled=!0,a.lock();const o=G("button",{},p("web_game_again"));o.addEventListener("click",()=>{a.reset(),a.unlock(),r.disabled=!1,s.className="learn-game-feedback",s.replaceChildren(),a.focusFirst()}),s.className="learn-game-feedback right",s.replaceChildren(G("p",{},p("web_learn_rescue_cw_done")),G("p",{class:"learn-game-result"},G("span",{class:"mono",dir:"ltr"},i.keyword)),...i.end?[an("p",{},i.end)]:[],o)}),a.unlock(),t.append(n,an("p",{},i.intro),a.element,r,s),t}function Hg(i){const e=RE(i),t=new Map(i.solution.map((g,f)=>[`${g.row} ${g.col}`,f])),n=new Map;for(const g of i.words)n.set(`${g.row} ${g.col}`,g.number);const a=new Map,s=G("div",{class:"learn-cw-grid",dir:"ltr"});s.style.gridTemplateColumns=`repeat(${i.cols}, var(--cw-cell))`;let r=!0;const o=(g,f)=>i.words.filter(b=>b.across?b.row===g&&f>=b.col&&f=b.row&&g{var v;const x=r?`${g} ${f+b}`:`${g+b} ${f}`;(v=a.get(x))==null||v.focus()};e.forEach((g,f)=>g.forEach((b,x)=>{if(!b)return s.append(G("span",{class:"learn-cw-empty"}));const v=`${f} ${x}`,w=G("input",{type:"text",maxlength:"1",autocomplete:"off",autocapitalize:"characters",spellcheck:"false","aria-label":p("web_learn_rescue_cell_fmt",f+1,x+1)});w.disabled=!0,w.addEventListener("focus",()=>{const k=o(f,x);k.some(D=>D.across===r)||(r=k[0].across),w.select()}),w.addEventListener("input",()=>{w.value=w.value.slice(-1).toUpperCase(),w.classList.remove("wrong"),c(),w.value&&l(f,x,1)}),w.addEventListener("keydown",k=>{if(k.key==="Backspace"&&!w.value)l(f,x,-1);else if(k.key==="ArrowRight"||k.key==="ArrowLeft")r=!0,l(f,x,k.key==="ArrowRight"?1:-1);else if(k.key==="ArrowDown"||k.key==="ArrowUp")r=!1,l(f,x,k.key==="ArrowDown"?1:-1);else return;k.preventDefault()}),a.set(v,w);const z=t.get(v),I=G("span",{class:`learn-cw-cell${z!==void 0?" key":""}`}),S=n.get(v);S&&I.append(G("small",{class:"learn-cw-number"},String(S))),z!==void 0&&I.append(G("small",{class:"learn-cw-keyindex"},String(z+1))),I.append(w),s.append(I)}));const u=g=>{const f=G("ol",{class:"learn-cw-clues"});for(const b of i.words.filter(x=>x.across===g).sort((x,v)=>x.number-v.number)){const x=an("li",{value:String(b.number)},`${b.clue} (${b.word.length})`);x.addEventListener("click",()=>{var v;r=b.across,(v=a.get(`${b.row} ${b.col}`))==null||v.focus()}),f.append(x)}return G("div",{},G("strong",{},p(g?"web_learn_rescue_across":"web_learn_rescue_down")),f)},m=i.solution.map(()=>G("span",{class:"learn-cw-keybox"})),c=()=>i.solution.forEach((g,f)=>m[f].textContent=a.get(`${g.row} ${g.col}`).value||" "),d=G("div",{class:"learn-cw"},G("div",{class:"learn-cw-board"},s,G("p",{class:"learn-cw-keyword"},`${p("web_learn_rescue_keyword")} `,G("span",{class:"mono",dir:"ltr"},...m))),G("div",{class:"learn-cw-cluebox"},u(!0),u(!1))),h=new Set;return{element:d,give(g,f,b){const x=a.get(`${g} ${f}`);x.value=b,x.parentElement.classList.add("given","arrived"),h.add(`${g} ${f}`),c()},unlock(){for(const[g,f]of a)f.disabled=h.has(g)},lock(){for(const g of a.values())g.disabled=!0},focusFirst(){var g;(g=[...a].find(([f])=>!h.has(f)))==null||g[1].focus({preventScroll:!0})},check(){let g=!0;for(const[f,b]of a){const[x,v]=f.split(" ").map(Number),w=b.value!==e[x][v];b.classList.toggle("wrong",w),w&&(g=!1)}return g},reset(){h.clear();for(const g of a.values())g.value="",g.disabled=!0,g.classList.remove("wrong"),g.parentElement.classList.remove("given","arrived");c()}}}const eF="http://www.w3.org/2000/svg";function it(i,e={},...t){const n=document.createElement(i);for(const[a,s]of Object.entries(e))n.setAttribute(a,s);return n.append(...t),n}function v1(i,e={}){const t=document.createElementNS(eF,i);for(const[n,a]of Object.entries(e))t.setAttribute(n,String(a));return t}function Rr(i,e,t){const n=it(i,e);return n.innerHTML=je(t),n}const tF={"#":"#6b7280","=":"#111827",r:"#ef4444",g:"#22c55e",b:"#3b82f6",y:"#facc15"},nF=450;function iF(i,e){const t=it("section",{class:"learn-game learn-round-game learn-drive-game"}),n=it("div",{class:"learn-game-head"});n.append(it("img",{src:e,alt:"",width:"40",height:"40"}),it("strong",{},i.title));const a=it("p",{class:"learn-game-status"}),s=it("div",{class:"learn-game-stage"});t.append(n,a,s);const r=i.rounds.length,o=i.field;let l=0,u=0,m=0;const c=()=>{a.textContent=`${p("web_game_round_fmt",l+1,r)} · ${p("web_game_score_fmt",u)}`},d=()=>{const b=it("button",{class:"primary"},l+1{l++,l{window.clearInterval(m),c();const b=i.rounds[l],x=b.map[0].length,v=b.map.length,w=x*o,z=v*o,I=M=>M+w/2,S=M=>z/2-M,k=Cg(b,o),D=aN(b,o),P=v1("svg",{viewBox:`-2 -2 ${w+4} ${z+4}`,class:"learn-drive-map",role:"group","aria-label":b.question}),C=[];b.map.forEach((M,j)=>{C.push([]),Array.from(M).forEach((N,V)=>{const U=v1("rect",{x:V*o,y:j*o,width:o,height:o,class:"cell",fill:tF[N]??"#ffffff",tabindex:0,role:"button","aria-label":`${V+1}, ${j+1}`}),re=()=>ae(V,j);U.addEventListener("click",re),U.addEventListener("keydown",K=>{(K.key==="Enter"||K.key===" ")&&(K.preventDefault(),re())}),P.append(U),C[j].push(U)})});const B=v1("polyline",{class:"trail",points:"",fill:"none"}),A=v1("g",{class:"robot"}),L=Math.min(o*.7,20);A.append(v1("rect",{x:-L/2,y:-L/2,width:L,height:L,rx:L/5,class:"body"}),v1("path",{d:`M ${-L/3} ${L/6} L 0 ${-L/2.4} L ${L/3} ${L/6} Z`,class:"nose"}));let F=k.start.heading;const Y=M=>{F+=((M.heading-F)%360+540)%360-180,A.style.transform=`translate(${I(M.x)}px, ${S(M.y)}px) rotate(${F}deg)`};Y(k.start),P.append(B,A);const ne=it("div",{class:"learn-game-feedback",role:"status"}),X=it("pre",{class:"learn-game-code mono",dir:"ltr"},...b.code.split(` +`).map(M=>it("div",{class:"ln"},M||" ")));let he=!1;const ae=(M,j)=>{if(he)return;he=!0,P.classList.add("done");const N=M===b.target.col&&j===b.target.row;C[j][M].classList.add(N?"right":"wrong"),N&&u++,c();const V=D.run.frames;let U=0;const re=[`${I(k.start.x)},${S(k.start.y)}`],K=()=>{if(U++,U>=V.length){window.clearInterval(m),C[b.target.row][b.target.col].classList.add("right");const ue=d();ne.className=`learn-game-feedback ${N?"right":"wrong"}`,ne.replaceChildren(it("p",{},p(N?"web_game_right":"web_game_wrong_short")),Rr("div",{class:"learn-game-explain"},b.explanation),ue),ue.focus({preventScroll:!0});return}const le=V[U].pose;Y(le),re.push(`${I(le.x)},${S(le.y)}`),B.setAttribute("points",re.join(" "))};m=window.setInterval(()=>{if(!t.isConnected)return window.clearInterval(m);K()},nF)};s.replaceChildren(X,Rr("p",{class:"learn-game-question"},b.question),P,ne)},g=()=>{window.clearInterval(m),a.textContent="";const b=it("button",{class:"primary"},p("web_game_again"));b.addEventListener("click",()=>{l=u=0,h()}),s.replaceChildren(it("p",{class:"learn-game-result"},p("web_game_done_fmt",u,r)),it("p",{},p(u===r?"web_game_perfect":u>=r*.7?"web_game_good":"web_game_practice_short")),b)},f=it("button",{class:"primary"},p("web_game_start"));return f.addEventListener("click",h),s.append(Rr("p",{},i.intro),f),t}function jt(i,e={},...t){const n=document.createElement(i);for(const[a,s]of Object.entries(e))n.setAttribute(a,s);return n.append(...t),n}function Cm(i,e,t){const n=jt(i,e);return n.innerHTML=je(t),n}function aF(i){const e=jt("section",{class:"learn-cloze"});e.append(jt("strong",{class:"learn-cloze-title"},i.title)),i.task&&e.append(Cm("p",{},i.task)),e.append(jt("p",{class:"learn-cloze-hint"},p("web_learn_cloze_hint")));const t=[];for(const m of i.blocks){const c=jt("pre",{class:"learn-cloze-code mono",dir:"ltr"});for(const d of m){const h=jt("div",{class:"ln"});for(const g of d){if(typeof g=="string"){h.append(g);continue}const f=jt("input",{type:"text",class:"learn-cloze-gap mono",autocomplete:"off",autocapitalize:"off",autocorrect:"off",spellcheck:"false",enterkeyhint:"done","aria-label":`${t.length+1}`});f.style.width=`${Math.max(3,...g.answers.map(b=>b.length))+1}ch`,t.push({input:f,answers:g.answers}),h.append(f)}d.length||h.append(` +`),c.append(h)}e.append(c)}const n=jt("p",{class:"learn-cloze-status",role:"status"}),a=i.explanation?Cm("p",{class:"learn-explanation"},i.explanation):void 0;a&&(a.hidden=!0);const s=jt("button",{class:"learn-cloze-check"},p("web_learn_check")),r=jt("button",{},p("web_learn_cloze_solution")),o=jt("button",{},p("web_learn_cloze_again"));r.hidden=!0,o.hidden=!0;const l=jt("div",{class:"learn-cloze-actions"},s,r,o);e.append(l,n),a&&e.append(a);const u=()=>{var d;let m=0;for(const h of t){const g=uN(h.answers,h.input.value);h.input.classList.toggle("right",g),h.input.classList.toggle("wrong",!g),g&&m++}const c=m===t.length;n.textContent=c?p("web_learn_cloze_all_right"):p("web_learn_cloze_score_fmt",m,t.length),n.className=`learn-cloze-status ${c?"right":"wrong"}`,a&&(a.hidden=!c),c?(t.forEach(h=>h.input.disabled=!0),s.hidden=!0,o.hidden=!1):(r.hidden=!1,(d=t.find(h=>h.input.classList.contains("wrong")))==null||d.input.focus())};return s.addEventListener("click",u),r.addEventListener("click",()=>{for(const m of t)m.input.value=m.answers[0],m.input.classList.remove("right","wrong"),m.input.classList.add("shown"),m.input.disabled=!0;n.textContent="",n.className="learn-cloze-status",a&&(a.hidden=!1),s.hidden=!0,r.hidden=!0,o.hidden=!1}),o.addEventListener("click",()=>{var m;for(const c of t)c.input.value="",c.input.classList.remove("right","wrong","shown"),c.input.disabled=!1;n.textContent="",n.className="learn-cloze-status",a&&(a.hidden=!0),s.hidden=!1,r.hidden=!0,o.hidden=!0,(m=t[0])==null||m.input.focus()}),t.forEach((m,c)=>{m.input.addEventListener("input",()=>m.input.classList.remove("right","wrong")),m.input.addEventListener("keydown",d=>{d.key==="Enter"&&(d.preventDefault(),c1?12:13});return n.forEach((s,r)=>{const o=It("tspan",{x:e.x,y:e.y+4.5+(r-(n.length-1)/2)*14});o.textContent=s,a.append(o)}),a}function ya(i,e){return It("polyline",{points:i.map(t=>t.join(",")).join(" "),fill:"none","marker-end":`url(#${e})`})}function Dm(i,e,t,n){const a=It("text",{x:e,y:t,"font-size":12,"font-weight":600,fill:n?"#248a3d":"#d70015"});return a.textContent=i,a}function oF(i,e){const t=Dg(e,110),n=Math.max(...t.map(u=>u.length)),a=Math.max(70,n*6.6+(i==="raute"?56:26)),s=i==="raute"?48:t.length>1?40:30,r=It("svg",{viewBox:`0 0 ${a+4} ${s+4}`,width:a+4,height:s+4,"aria-hidden":"true"}),o={x:(a+4)/2,y:(s+4)/2,w:a,h:s},l=j0(i,o);return l.setAttribute("fill",_0[i]),l.setAttribute("stroke","#1c1c1e"),l.setAttribute("stroke-width","1.5"),r.append(l,Vg(e,{...o,w:t.length>1?124:a},i)),r}function lF(i){const e=[...Array(i).keys()];for(let t=i-1;t>0;t--){const n=Math.floor(Math.random()*(t+1));[e[t],e[n]]=[e[n],e[t]]}return i>1&&e.every((t,n)=>t===n)&&e.reverse(),e}function uF(){const i=Qe("dl",{class:"learn-pap-legend"}),e=[["oval","web_learn_pap_legend_oval"],["rechteck","web_learn_pap_legend_rect"],["raute","web_learn_pap_legend_diamond"],["parallelogramm","web_learn_pap_legend_para"]];for(const[t,n]of e){const a=t==="raute"?44:40,s=It("svg",{viewBox:`0 0 ${a+4} 28`,width:a+4,height:28,"aria-hidden":"true"}),r=j0(t,{x:(a+4)/2,y:14,w:a,h:t==="raute"?24:18});r.setAttribute("fill",_0[t]),r.setAttribute("stroke","#1c1c1e"),r.setAttribute("stroke-width","1.5"),s.append(r),i.append(Qe("dt",{},s),Qe("dd",{},p(n)))}return i}function mF(i){const e=Qe("section",{class:"learn-pap"});if(e.append(Qe("strong",{class:"learn-pap-title"},i.title)),i.task){const M=Qe("p");M.innerHTML=je(i.task),e.append(M)}e.append(Qe("p",{class:"learn-pap-hint"},p("web_learn_pap_hint")));const{boxes:t,height:n}=bN(i),a=t.filter(Boolean),s=Math.min(...a.map(M=>M.x-M.w/2))-4,r=i.nodes.some(M=>M.shape==="raute"),o=Math.max(...a.map(M=>M.x+M.w/2),r?Math.max(...a.map(M=>M.x))+85+40:0)+4,l=It("svg",{viewBox:`${s} 0 ${o-s} ${n}`,class:"learn-pap-plan",role:"group","aria-label":i.title}),u=`pap-arrow-${++rF}`;l.innerHTML=``;const m=It("g",{stroke:"#1c1c1e","stroke-width":2}),c=It("g"),d=p("web_learn_pap_yes"),h=p("web_learn_pap_no"),g=M=>t[M].y-t[M].h/2,f=M=>t[M].y+t[M].h/2,b=i.nodes.map((M,j)=>j).filter(M=>!i.nodes[M].isSide);b.forEach((M,j)=>{const N=i.nodes[M],V=t[M],U=b[j+1];if(U!==void 0&&(m.append(ya([[V.x,f(M)],[V.x,g(U)-2]],u)),N.shape==="raute"&&c.append(Dm(N.sideExit==="nein"?d:h,V.x+6,f(M)+13,N.sideExit==="nein"))),N.shape!=="raute")return;const re=V.x+V.w/2;if(c.append(Dm(N.sideExit==="ja"?d:h,re+5,V.y-6,N.sideExit==="ja")),N.backTo!==void 0){const K=g(N.backTo)-14;m.append(ya([[re,V.y],[re+22,V.y],[re+22,K],[V.x,K]],u))}else if(N.side!==void 0){const K=t[N.side],le=g(M)-14;m.append(ya([[re,V.y],[K.x-K.w/2-2,V.y]],u)),m.append(ya([[K.x,K.y-K.h/2],[K.x,le],[V.x,le]],u))}}),l.append(m,c);const x=i.nodes.map(()=>{}),v=[],w=[];let z;const I=Qe("p",{class:"learn-pap-status",role:"status"}),S=i.explanation?Qe("p",{class:"learn-explanation"}):void 0;S&&(S.innerHTML=je(i.explanation),S.hidden=!0);let k=!1;const D=()=>{v.forEach(M=>M.classList.remove("right","wrong")),I.textContent="",I.className="learn-pap-status"},P=M=>{const j=v[M];j.replaceChildren();const N=i.nodes[M],V=x[M],U=j0(N.shape,t[M]);if(U.setAttribute("class","learn-pap-shape"),V===void 0)U.setAttribute("fill","#f7f7f9"),U.setAttribute("stroke-dasharray","6 4"),j.append(U),j.setAttribute("aria-label",p("web_learn_pap_empty"));else{const re=i.nodes[V];U.setAttribute("fill",_0[re.shape]),j.append(U,Vg(re.text,t[M],N.shape)),j.setAttribute("aria-label",re.text)}},C=()=>{i.nodes.forEach((M,j)=>P(j)),w.forEach((M,j)=>{M.hidden=x.includes(j),M.classList.toggle("selected",z===j)})},B=(M,j)=>{if(k)return;const N=x.indexOf(j);N>=0&&(x[N]=void 0),x[M]=j,z=void 0,D(),C()};i.nodes.forEach((M,j)=>{const N=It("g",{class:"learn-pap-slot","data-slot":j,tabindex:0,role:"button"}),V=()=>{k||(z!==void 0?B(j,z):x[j]!==void 0&&(x[j]=void 0,D(),C()))};N.addEventListener("click",V),N.addEventListener("keydown",U=>{U.key!=="Enter"&&U.key!==" "||(U.preventDefault(),V())}),v.push(N),l.append(N)});const A=Qe("div",{class:"learn-pap-tray"});let L=!1;for(const M of lF(i.nodes.length)){const j=i.nodes[M],N=Qe("button",{class:"learn-pap-card",type:"button","aria-label":j.text},oF(j.shape,j.text));w[M]=N,N.addEventListener("click",()=>{L||k||(z=z===M?void 0:M,C())}),N.addEventListener("pointerdown",V=>{if(k)return;L=!1;let U;const re=ue=>{var Se;!U&&Math.hypot(ue.clientX-V.clientX,ue.clientY-V.clientY)<6||(U||(L=!0,U=N.cloneNode(!0),U.classList.add("learn-pap-ghost"),document.body.append(U),N.classList.add("dragging")),U.style.left=`${ue.clientX}px`,U.style.top=`${ue.clientY}px`,v.forEach(Fe=>Fe.classList.remove("over")),(Se=K(ue))==null||Se.classList.add("over"))},K=ue=>{var Fe;U&&(U.style.display="none");const Se=(Fe=document.elementFromPoint(ue.clientX,ue.clientY))==null?void 0:Fe.closest("[data-slot]");return U&&(U.style.display=""),Se&&v.includes(Se)?Se:void 0},le=ue=>{if(N.removeEventListener("pointermove",re),N.removeEventListener("pointerup",le),N.removeEventListener("pointercancel",le),v.forEach(Fe=>Fe.classList.remove("over")),N.classList.remove("dragging"),!U)return;const Se=ue.type==="pointerup"?K(ue):void 0;U.remove(),Se&&B(Number(Se.getAttribute("data-slot")),M),setTimeout(()=>L=!1)};N.setPointerCapture(V.pointerId),N.addEventListener("pointermove",re),N.addEventListener("pointerup",le),N.addEventListener("pointercancel",le)}),A.append(N)}const F=Qe("button",{class:"learn-pap-check"},p("web_learn_check")),Y=Qe("button",{},p("web_learn_cloze_solution")),ne=Qe("button",{},p("web_learn_cloze_again"));Y.hidden=!0,ne.hidden=!0;const X=()=>{k=!0,F.hidden=!0,Y.hidden=!0,ne.hidden=!1,A.hidden=!0,ae.classList.add("done"),S&&(S.hidden=!1)};F.addEventListener("click",()=>{const M=x.filter(V=>V===void 0).length;let j=0;x.forEach((V,U)=>{const re=V!==void 0&&cN(i,U,V);v[U].classList.toggle("right",re),v[U].classList.toggle("wrong",V!==void 0&&!re),re&&j++});const N=j===i.nodes.length;I.textContent=N?p("web_learn_pap_all_right"):M?p("web_learn_pap_missing_fmt",M):p("web_learn_pap_score_fmt",j,i.nodes.length),I.className=`learn-pap-status ${N?"right":"wrong"}`,N?X():M||(Y.hidden=!1)}),Y.addEventListener("click",()=>{i.nodes.forEach((M,j)=>x[j]=j),z=void 0,C(),D(),v.forEach(M=>M.classList.add("shown")),X()}),ne.addEventListener("click",()=>{i.nodes.forEach((M,j)=>x[j]=void 0),k=!1,z=void 0,v.forEach(M=>M.classList.remove("shown")),D(),C(),F.hidden=!1,ne.hidden=!0,A.hidden=!1,ae.classList.remove("done"),S&&(S.hidden=!0)}),C();const he=Qe("div",{class:"learn-pap-left"});he.append(l),i.legend&&he.append(uF());const ae=Qe("div",{class:"learn-pap-work"},he,A);return e.append(ae,Qe("div",{class:"learn-pap-actions"},F,Y,ne),I),S&&e.append(S),e}const cF="code, pre, a, button, h1, h2, h3, h4, strong, .term, .ui-pointer";function Pm(i,e){var s;const t=[...i.querySelectorAll(".learn-text")],n=new Set;for(const r of t.flatMap(o=>[...o.querySelectorAll("strong")])){const o=am(e),l=o==null?void 0:o.exec(r.textContent??""),u=l?sm(e,l[0]):void 0;u&&n.add(u)}let a=e.filter(r=>!n.has(r));for(const r of t){const o=document.createTreeWalker(r,NodeFilter.SHOW_TEXT),l=[];for(;o.nextNode();){const u=o.currentNode;(s=u.parentElement)!=null&&s.closest(cF)||l.push(u)}for(let u of l)for(;;){const m=am(a),c=m==null?void 0:m.exec(u.data),d=c?sm(a,c[0]):void 0;if(!c||!d)break;const h=u.splitText(c.index);u=h.splitText(c[0].length);const g=document.createElement("span");g.className="term",g.tabIndex=0,g.setAttribute("role","button"),g.setAttribute("aria-describedby","term-tip"),g.dataset.term=d.term,g.dataset.text=d.text,h.replaceWith(g),g.append(h),a=a.filter(f=>f!==d)}}}function dF(i){const e=document.createElement("div");e.id="term-tip",e.className="term-tip",e.setAttribute("role","tooltip"),e.hidden=!0,document.body.append(e);let t,n=!1;const a=o=>{t=o,e.replaceChildren();const l=document.createElement("strong");l.textContent=o.dataset.term??"",e.append(l,document.createTextNode(" "+(o.dataset.text??""))),e.hidden=!1;const u=o.getBoundingClientRect(),m=e.offsetWidth,c=e.offsetHeight,d=Math.max(8,Math.min(u.left,window.innerWidth-m-8)),h=u.bottom+6;e.style.left=`${d}px`,e.style.top=`${h+c>window.innerHeight-8?Math.max(8,u.top-c-6):h}px`,o.setAttribute("aria-expanded","true")},s=()=>{t==null||t.setAttribute("aria-expanded","false"),t=void 0,n=!1,e.hidden=!0},r=o=>{var l,u;return((u=(l=o.target)==null?void 0:l.closest)==null?void 0:u.call(l,".term"))??void 0};return i.addEventListener("pointerover",o=>{const l=r(o);l&&o.pointerType==="mouse"&&!n&&a(l)}),i.addEventListener("pointerout",o=>{r(o)&&o.pointerType==="mouse"&&!n&&s()}),i.addEventListener("click",o=>{const l=r(o);if(l){if(n&&t===l)return s();a(l),n=!0}}),i.addEventListener("focusin",o=>{const l=r(o);l&&!n&&a(l)}),i.addEventListener("focusout",o=>{r(o)&&!n&&s()}),i.addEventListener("keydown",o=>{const l=r(o);o.key==="Escape"&&t?s():l&&(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),l.click())}),i.addEventListener("scroll",s,!0),document.addEventListener("pointerdown",o=>{t&&!r(o)&&!e.contains(o.target)&&s()}),{hide:s}}const qg={leiste:".topbar > .toolbar",editor:".editor-rail, .columns > .app",werkzeuge:".diagram-tools",dateien:".files-rail, .files",codelive:".live-rail, .livecode",ausfuehren:"[data-run=play]",konsole:".livecode .console",einzelschritt:"[data-run=step]",elemente:".palette",struktogramm:".canvas",objektinspektor:".inspector",reiter:".tabs",titel:".caption",neu:"[data-action=new]",oeffnen:"[data-action=open]",speichern:"[data-action=save]",exportieren:"[data-action=export]",rueckgaengig:"[data-action=undo]",loeschen:"[data-action=delete]",textgroesse:"[data-action=settings]",einstellungen:"[data-action=settings]",lernen:".learn .learn-hide",code:"[data-action=code]",simulation:"[data-action=simulate]"},Qg=new Set(["editor","werkzeuge","elemente","struktogramm","objektinspektor","reiter","titel","rueckgaengig","loeschen","exportieren","code","simulation"]),Ug=new Set(["ausfuehren","konsole","einzelschritt"]);function dr(i,e){return[...i.querySelectorAll(".ui-pointer")].some(t=>e.has(t.dataset.target??""))}function Bm(i){return i==="elemente"?["editor","palette"]:Qg.has(i)?["editor"]:i==="codelive"||Ug.has(i)?["livecode"]:i==="dateien"?["files"]:[]}function hF(i){return dr(i,new Set(["elemente"]))}function gF(i){return dr(i,new Set(["dateien"]))}function pF(i){return dr(i,Qg)}function fF(i){return dr(i,Ug)}function Om(i){for(const e of i.querySelectorAll('a[href^="#zeige-"]')){const t=e.getAttribute("href").slice(7);if(!(t in qg))continue;const n=document.createElement("span");n.className="ui-pointer",n.tabIndex=0,n.setAttribute("role","button"),n.dataset.target=t,n.append(...e.childNodes),e.replaceWith(n)}}function bF(i,e=()=>()=>{}){let t,n,a,s,r;const o=()=>{t==null||t.classList.remove("ui-spot"),t=void 0,window.clearTimeout(n)},l=(h,g)=>{o();const f=[...document.querySelectorAll(qg[h.dataset.target??""]??":not(*)")].find(b=>b.getClientRects().length>0);f&&(t=f,f.classList.add("ui-spot"),g&&(n=window.setTimeout(o,2500)))},u=(h,g)=>requestAnimationFrame(()=>{l(h,g),t==null||t.scrollIntoView({block:"nearest",inline:"nearest"})}),m=()=>{window.clearTimeout(s),window.clearTimeout(r),a==null||a(),a=void 0},c=h=>{window.clearTimeout(s),window.clearTimeout(r),a=void 0,e(Bm(h.dataset.target??"")),l(h,!0),u(h,!0)},d=h=>{var g,f;return((f=(g=h.target)==null?void 0:g.closest)==null?void 0:f.call(g,".ui-pointer"))??void 0};return i.addEventListener("pointerover",h=>{const g=d(h);!g||h.pointerType!=="mouse"||(window.clearTimeout(r),l(g,!1),window.clearTimeout(s),s=window.setTimeout(()=>{if(a)return;const f=Bm(g.dataset.target??"");f.length!==0&&(a=e(f),u(g,!1))},250))}),i.addEventListener("pointerout",h=>{!d(h)||h.pointerType!=="mouse"||(o(),window.clearTimeout(s),window.clearTimeout(r),r=window.setTimeout(m,400))}),i.addEventListener("click",h=>{const g=d(h);g&&c(g)}),i.addEventListener("focusin",h=>{const g=d(h);g&&l(g,!1)}),i.addEventListener("focusout",h=>{d(h)&&o()}),i.addEventListener("keydown",h=>{const g=d(h);g&&(h.key==="Enter"||h.key===" ")&&(h.preventDefault(),c(g))}),{off:()=>{m(),o()}}}const Ct='',xF=()=>{const i=[];for(const e of zt){const t=i.at(-1);t&&t.name===e.section?t.lessons.push(e):i.push({name:e.section,lessons:[e]})}return i};function _(i,e={},...t){const n=document.createElement(i);for(const[a,s]of Object.entries(e))n.setAttribute(a,s);return n.append(...t),n}function Ve(i,e,t){const n=_(i,e);return n.innerHTML=t,n}const vF=i=>p(`element_${T[i]}`);function yF(i){return{caption:i,elements:[Ae(T.anweisung,{textLines:["ø"]})]}}function Mm(i){const e=i.start?di(i.start):void 0;return e?{...e,caption:e.caption||i.title}:yF(i.title)}class wF{constructor(e){y(this,"element");y(this,"tab","lessons");y(this,"returnTo");y(this,"lessonId");y(this,"taskId");y(this,"body");y(this,"tips");y(this,"pointers");this.host=e,this.element=_("aside",{class:"learn","aria-label":p("web_learn_title")}),this.tips=dF(this.element),this.pointers=bF(this.element,t=>this.host.reveal(t)),Bs(bm(o1())),this.restore()}restore(){const e=xe.view();e&&(this.tab=["lessons","tasks","reference"].find(t=>t===e.tab)??"lessons",this.lessonId=zt.some(t=>t.id===e.lesson)?e.lesson:void 0,this.taskId=Dn.some(t=>t.id===e.task)?e.task:void 0),this.render()}render(){this.tips.hide(),this.pointers.off(),Bs(bm(o1()));const e=_("div",{class:"segmented learn-tabs",role:"tablist"});for(const[a,s]of[["lessons",p("web_learn_lessons")],["tasks",p("web_learn_tasks")],["reference",p("web_learn_reference")]]){const r=_("button",{role:"tab","aria-pressed":String(this.tab===a),"data-learn-tab":a},s);r.addEventListener("click",()=>{this.tab===a&&(a==="lessons"&&(this.lessonId=void 0),a==="tasks"&&(this.taskId=void 0)),this.tab=a,this.persist(),this.render()}),e.append(r)}const t=Ve("button",{class:"learn-hide",title:p("web_learn_hide"),"aria-label":p("web_learn_hide")},Ct);t.addEventListener("click",()=>this.host.collapse());const n=_("div",{class:"learn-head"},e,t);if(this.body=_("div",{class:"learn-body"}),this.element.replaceChildren(n,this.body),this.tab==="lessons"){const a=zt.find(s=>s.id===this.lessonId);a?this.renderLesson(a):this.renderLessonList()}else if(this.tab==="tasks"){const a=Dn.find(s=>s.id===this.taskId);a?this.renderTask(a):this.renderTaskList()}else{const a=es.map(r=>`- **${r.term}:** ${r.text}`).join(` `),s=Ve("div",{class:"learn-text learn-reference"},jn(`${Xa} ## ${p("web_learn_terms")} -${a}`));this.body.append(s),this.foldReference(s)}}foldReference(e){const t="visustruct.reference.open";let n=[];try{n=JSON.parse(localStorage.getItem(t)??"[]")}catch{}for(const a of[...e.querySelectorAll("h2")]){const s=a.textContent??"",r=_("details",{class:"reference-group"});r.open=n.includes(s);const o=_("summary",{},s);for(a.replaceWith(r),r.append(o);r.nextSibling&&r.nextSibling.nodeName!=="H2";)r.append(r.nextSibling);r.addEventListener("toggle",()=>{n=r.open?[...new Set([...n,s])]:n.filter(l=>l!==s);try{localStorage.setItem(t,JSON.stringify(n))}catch{}})}}showReference(){this.tab="reference",this.persist(),this.render()}persist(){xe.setView({tab:this.tab,lesson:this.lessonId,task:this.taskId})}showLesson(e){zt.some(t=>t.id===e)&&this.openLesson(e)}openLesson(e){this.tab="lessons",this.lessonId=e,this.returnTo=void 0,this.persist(),this.render(),this.body.scrollTop=0}renderLessonList(){this.body.append(_("p",{class:"hint"},p("web_learn_intro")));for(const e of gN()){this.body.append(_("h3",{class:"learn-section"},e.name));const t=_("ol",{class:"learn-list"});for(const n of e.lessons){const a=xe.lesson(n.id),s=a.done?"✓":a.step>0?p("web_learn_step_of_fmt",a.step+1,n.steps.length):"",r=_("button",{class:"learn-item"+(a.done?" done":""),"data-lesson":n.id},_("span",{class:"learn-num"},String(n.number)),_("span",{class:"learn-item-text"},_("strong",{},n.robot?`🤖 ${n.title}`:n.title),_("small",{},n.summary)),_("span",{class:"learn-status"},s));r.addEventListener("click",()=>this.openLesson(n.id)),t.append(_("li",{},r))}this.body.append(t)}this.body.append(this.renderTeacherBox())}renderLesson(e){var u;const t=xe.lesson(e.id),n=Math.min(t.step,e.steps.length-1),a=e.steps[n],s=_("button",{class:"learn-back"},`← ${p("web_learn_all_lessons")}`);s.addEventListener("click",()=>this.openLesson(void 0));const r=_("nav",{class:"learn-progress","aria-label":p("web_learn_step_of_fmt",n+1,e.steps.length)});r.append(...e.steps.map((m,c)=>{const d=p("web_learn_step_fmt",c+1,m.title),h=cthis.goToStep(e,c)),g})),this.body.append(_("div",{class:"learn-lesson-head"},_("div",{class:"learn-head-row"},s,this.stepNav(e,n,t.done,"learn-nav learn-nav-top")),_("p",{class:"learn-kicker"},`${p("web_learn_lesson_fmt",e.number)} · ${e.section}${e.robot?" · 🤖 VisuBot":""}`),_("h2",{class:"learn-title"},_("span",{class:"learn-num","aria-hidden":"true"},String(e.number)),e.title),r,_("h3",{class:"learn-step-title"},`${n+1}. ${a.title}`)));const o=((u=this.returnTo)==null?void 0:u.lesson)===e.id&&this.returnTo.step!==n?this.returnTo:void 0,l=()=>{const m=_("button",{class:"learn-return"},`↩ ${p("web_learn_back_to_checklist")}`);return m.addEventListener("click",()=>{this.returnTo=void 0,this.goToStep(e,o.step),this.body.scrollTop=o.scroll}),m};o&&this.body.append(l()),a.blocks.forEach((m,c)=>this.body.append(this.renderBlock(m,`${n}-${c}`,e))),Om(this.body),FE(this.body),this.openNeededColumns(a.blocks),Dm(this.body,es),this.body.append(this.stepNav(e,n,t.done,"learn-nav")),o&&this.body.append(l())}stepNav(e,t,n,a){const s=_("div",{class:a}),r=_("button",{},`← ${p("web_learn_back")}`);if(r.disabled=t===0,r.addEventListener("click",()=>this.goToStep(e,t-1)),s.append(r),tthis.goToStep(e,t+1)),s.append(o)}else{const o=_("button",{class:"primary"},n?`✓ ${p("web_learn_done")}`:p("web_learn_finish"));o.addEventListener("click",()=>{xe.updateLesson(e.id,{done:!0});const l=zt.find(u=>u.number===e.number+1);this.openLesson(l==null?void 0:l.id)}),s.append(o)}return s}goToStep(e,t){xe.updateLesson(e.id,{step:t}),this.render(),this.body.scrollTop=0}openNeededColumns(e){const t=e.flatMap(n=>n.kind==="exercise"?[n.exercise]:[]);cN(this.body)?(this.host.showEditor(),uN(this.body)&&this.host.reveal(["palette"])):mN(this.body)?this.host.showFiles():t.some(n=>n.code!=="java")?this.host.showEditor():(t.length>0||this.body.querySelector(".lesson-code[data-lang=java]"))&&this.host.showJava(),dN(this.body)&&this.host.showLiveCode()}renderTaskList(){this.body.append(_("p",{class:"hint"},p("web_learn_tasks_intro")));const e=_("ul",{class:"learn-list"});for(const t of Pn){const n=this.taskExercises(t),a=n.length>0&&n.every(o=>xe.exercise(o.id).done),s=zt.find(o=>o.number===t.after),r=_("button",{class:"learn-item"+(a?" done":""),"data-task":t.id},_("span",{class:"learn-num","aria-label":p("web_learn_level_fmt",t.level)},"★".repeat(t.level)),_("span",{class:"learn-item-text"},_("strong",{},t.title),_("small",{},s?p("web_learn_after_fmt",s.number,s.title):"")),_("span",{class:"learn-status"},a?"✓":""));r.addEventListener("click",()=>{this.taskId=t.id,this.persist(),this.render(),this.body.scrollTop=0}),e.append(_("li",{},r))}this.body.append(e,this.renderTeacherBox())}renderTeacherBox(){const e=_("details",{class:"learn-teacher"},_("summary",{},p("web_learn_teacher")));if(zm()){e.setAttribute("open","");const s=_("button",{},p("web_learn_teacher_off"));return s.addEventListener("click",()=>{BE(),this.render()}),e.append(_("p",{},p("web_learn_teacher_on")),s),e}const t=_("input",{type:"password",autocomplete:"off","aria-label":p("web_learn_teacher_code"),placeholder:p("web_learn_teacher_code")}),n=_("p",{class:"learn-result",role:"status"}),a=_("form",{class:"group"},t,_("button",{type:"submit"},p("web_learn_teacher_unlock")));return a.addEventListener("submit",async s=>{s.preventDefault(),await DE(t.value)?this.render():(n.className="learn-result info",n.textContent=p("web_learn_teacher_wrong"))}),e.append(_("p",{class:"hint"},p("web_learn_teacher_intro")),a,n),e}taskExercises(e){return e.blocks.flatMap(t=>t.kind==="exercise"?[t.exercise]:[])}renderTask(e){const t=_("button",{class:"learn-back"},`← ${p("web_learn_all_tasks")}`);t.addEventListener("click",()=>{this.taskId=void 0,this.persist(),this.render()});const n=zt.find(a=>a.number===e.after);if(this.body.append(t,_("h2",{class:"learn-title"},e.title)),n){const a=_("button",{class:"link-button"},p("web_learn_after_fmt",n.number,n.title));a.addEventListener("click",()=>this.openLesson(n.id)),this.body.append(_("p",{class:"learn-kicker"},a))}e.blocks.forEach((a,s)=>this.body.append(this.renderBlock(a,`task-${s}`))),Om(this.body),this.openNeededColumns(e.blocks),Dm(this.body,es)}renderBlock(e,t,n){switch(e.kind){case"markdown":return this.withOpenButtons(Ve("div",{class:"learn-text"},jn(e.text)));case"diagram":return this.renderDiagram(e.file,e.caption);case"exercise":return this.renderExercise(e.exercise);case"competences":return this.renderCompetences(e.items);case"checklist":return this.renderChecklist(e.items,t,n);case"quiz":return this.renderQuiz(e.questions,t,n);case"brag":return this.renderBrag(e.text,e.tip);case"images":return this.renderImages(e.files,e.caption);case"graphic":return e.animated?this.renderAnimation(e.file,e.caption):this.renderGraphic(e.file,e.caption,e.labeled);case"game":return this.renderGame(e.game);case"roundGame":return JE(e.game,x1);case"rescueGame":return QE(e.game,x1);case"driveGame":return XE(e.game,x1);case"crosswordGame":return UE(e.game,x1);case"caesar":return WE(e.key,e.text);case"cloze":return eN(e.cloze);case"pap":return rN(e.pap);case"textFile":return Ng(e.name,e.content);case"robotModel":return NE(e.focus,e.view,e.spin);case"robotQuiz":return RE(e.tasks,e.done)}}renderBrag(e,t=!1){const n=_("aside",{class:"learn-brag"});n.append(_("img",{src:x1,alt:"",width:"48",height:"48"}));const a=_("div",{},_("p",{class:"learn-brag-title"},p(t?"web_learn_ludwig_tip":"web_learn_brag")));return a.append(Ve("div",{class:"learn-text"},jn(e))),n.append(a),n}renderGame(e){const n=_("section",{class:"learn-game"}),a=_("div",{class:"learn-game-head"});a.append(_("img",{src:x1,alt:"",width:"40",height:"40"}),_("strong",{},p("web_game_title")));const s=_("p",{class:"learn-game-status"}),r=_("div",{class:"learn-game-stage"});n.append(a,s,r);let o=0,l=0;const u=()=>{const d=t4(e,o,10);s.textContent=`${p("web_game_round_fmt",o+1,10)} · ${p("web_game_score_fmt",l)}`;const h=_("div",{class:"learn-game-values mono"});for(const[w,z]of n4(d))h.append(_("code",{},`${w} = ${z}`));const g=_("div",{class:"group learn-game-answers"}),f=_("button",{class:"learn-game-true"},`✓ ${p("web_game_true")}`),b=_("button",{class:"learn-game-false"},`✗ ${p("web_game_false")}`);g.append(f,b);const x=_("div",{class:"learn-game-feedback",role:"status"}),v=w=>{f.disabled=b.disabled=!0;const z=w===d.answer;z&&l++,s.textContent=`${p("web_game_round_fmt",o+1,10)} · ${p("web_game_score_fmt",l)}`,x.className=`learn-game-feedback ${z?"right":"wrong"}`;const I=_("div",{class:"learn-game-steps mono"});Xx(d.condition,d.values).forEach((k,P)=>I.append(_("div",{},`${P?"→ ":""}${k}`)));const S=_("button",{class:"primary"},o+1<10?p("web_game_next"):p("web_game_finish"));S.addEventListener("click",()=>{o++,o<10?u():m()}),x.replaceChildren(_("p",{},p(z?"web_game_right":"web_game_wrong")),I,S),S.focus()};f.addEventListener("click",()=>v(!0)),b.addEventListener("click",()=>v(!1)),r.replaceChildren(h,_("div",{class:"learn-game-condition mono"},d.condition),g,x)},m=()=>{s.textContent="";const d=_("button",{class:"primary"},p("web_game_again"));d.addEventListener("click",()=>{o=l=0,u()}),r.replaceChildren(_("p",{class:"learn-game-result"},p("web_game_done_fmt",l,10)),_("p",{},p(l===10?"web_game_perfect":l>=10*.7?"web_game_good":"web_game_practice")),d)},c=_("button",{class:"primary"},p("web_game_start"));return c.addEventListener("click",u),r.append(_("p",{},p("web_game_intro")),c),n}renderImages(e,t){const n=_("figure",{class:"learn-figure"}),a=_("div",{class:"learn-images"});for(const s of e){const r=va(s);r&&a.append(_("img",{src:r,alt:"",loading:"lazy"}))}return n.append(a),t&&n.append(Ve("figcaption",{},je(t))),n}renderGraphic(e,t,n){const a=_("figure",{class:"learn-figure"}),s=va(e),r=n?va(n):void 0;if(s&&r){const o=_("img",{class:"learn-graphic",src:s,alt:"",loading:"lazy"}),l=_("button",{class:"learn-graphic-toggle",type:"button",title:p("web_learn_graphic_labels"),"aria-pressed":"false"},o);l.addEventListener("click",()=>{const u=l.getAttribute("aria-pressed")!=="true";l.setAttribute("aria-pressed",String(u)),o.src=u?r:s}),a.append(l,_("p",{class:"learn-graphic-hint"},p("web_learn_graphic_labels")))}else s&&a.append(_("img",{class:"learn-graphic",src:s,alt:"",loading:"lazy"}));return t&&a.append(Ve("figcaption",{},je(t))),a}renderAnimation(e,t){const n=_("figure",{class:"learn-figure"}),a=va(e);if(!a)return n;const s=_("div",{class:"learn-graphic learn-animation"}),r=_("button",{class:"learn-replay",type:"button"},`↻ ${p("web_learn_replay")}`);let o=()=>{};return fetch(a).then(l=>l.text()).then(l=>{var d,h;s.innerHTML=l;const u=s.querySelector("svg"),m=(h=(d=u==null?void 0:u.getAttribute("class"))==null?void 0:d.match(/(\S+-)svg\b/))==null?void 0:h[1];if(!u||!m)return;if(o=()=>{u.classList.remove(`${m}play`),u.getBoundingClientRect(),u.classList.add(`${m}play`)},typeof IntersectionObserver>"u")return o();const c=new IntersectionObserver(g=>{g.some(f=>f.isIntersecting)&&(c.disconnect(),o())},{threshold:.6});c.observe(s)}).catch(()=>s.append(_("img",{src:a,alt:""}))),r.addEventListener("click",()=>o()),n.append(s,r),t&&n.append(Ve("figcaption",{},je(t))),n}withOpenButtons(e){for(const t of e.querySelectorAll("pre.lesson-code[data-open=editor]")){const n=t.textContent??"",a=_("button",{class:"learn-open-code"},p("web_learn_open_in_editor"));a.addEventListener("click",()=>this.host.openJavaCode(n)),t.after(a)}return e}renderDiagram(e,t){const n=di(e),a=_("figure",{class:"learn-figure"});if(!n)return a;const s=this.host.preview(n);s&&a.append(_("div",{class:"learn-preview",dir:"ltr"},s)),t&&a.append(Ve("figcaption",{},je(t)));const r=_("button",{},p("web_learn_open_in_editor"));return r.addEventListener("click",()=>this.host.openDiagram(n,e)),a.append(r),a}renderExercise(e){const t=_("section",{class:"learn-exercise","data-exercise":e.id}),n=()=>xe.exercise(e.id),a=_("span",{class:"learn-badge"},`✓ ${p("web_learn_solved")}`);a.hidden=!n().done,t.append(_("h4",{},`${p("web_learn_exercise")}: ${e.title}`,a),xN(e),Ve("div",{class:"learn-text"},jn(e.task)));const s=_("div",{class:"learn-result",role:"status"}),r=_("div",{class:"learn-hints"}),o=_("div",{class:"group"}),l=_("button",{class:"primary"},p("web_learn_open_exercise"));l.addEventListener("click",()=>{const c=n().xml;let d=Mm(e);if(c)try{d=n0(c)}catch{}this.host.openExercise(e,d)});const u=_("button",{},p("web_learn_check"));if(u.addEventListener("click",()=>{const c=this.host.exerciseDocument(e.id);if(!c){s.className="learn-result info",s.textContent=p("web_learn_open_first");return}if(c.elements.every(Kl)){s.className="learn-result info",s.textContent=p("web_learn_empty");return}this.host.stopSimulation();const d=Qx(c,e.tests,this.host.subprogramsFor(e.id),ts),h=Ux(c),g=e.requires.map(x=>x==="forZaehlSchleife"?"forSchleife":x).filter(x=>x in T&&!h.has(T[x])),f=e.loopDepth!==void 0&&Yo(c.elements)x.passed)&&g.length===0&&!f;this.showResult(s,d,g,b,f),b&&(xe.updateExercise(e.id,{done:!0}),a.hidden=!1)}),o.append(l,u),e.hints.length>0){const c=_("button",{},p("web_learn_hint"));c.addEventListener("click",()=>{const d=r.children.length;if(d>=e.hints.length)return;const h=e.hints.length>1?`**${p("web_learn_hint_fmt",d+1,e.hints.length)}:** `:"";r.append(Ve("aside",{class:"lesson-note"},jn(h+e.hints[d]))),c.textContent=p("web_learn_hint_more"),c.toggleAttribute("disabled",d+1>=e.hints.length)}),o.append(c)}const m=_("button",{class:"danger-text"},p("web_learn_reset"));if(m.addEventListener("click",()=>{if(m.dataset.confirm!=="1"){m.dataset.confirm="1",m.textContent=p("web_learn_reset_confirm"),setTimeout(()=>{m.dataset.confirm="",m.textContent=p("web_learn_reset")},4e3);return}xe.resetExercise(e.id),this.host.resetExercise(e.id,Mm(e)),a.hidden=!0,s.replaceChildren(),s.className="learn-result",m.dataset.confirm="",m.textContent=p("web_learn_reset")}),o.append(m),t.append(o,r,s),zm()&&e.solution){const c=di(e.solution);if(c){const d=_("details",{class:"learn-solution"},_("summary",{},p("web_learn_solution")));d.addEventListener("toggle",()=>{if(!d.open||d.querySelector(".learn-preview"))return;const h=this.host.preview(c);h&&d.append(_("div",{class:"learn-preview",dir:"ltr"},h));const g=_("button",{},p("web_learn_open_in_editor"));g.addEventListener("click",()=>{this.host.openDiagram(c,e.solution);for(const f of e.subprograms){const b=di(f);b&&this.host.openDiagram(b,f)}});for(const f of e.subprograms){const b=di(f),x=b&&this.host.preview(b);x&&d.append(_("div",{class:"learn-preview",dir:"ltr"},x))}d.append(g)}),t.append(d)}}return t}showResult(e,t,n,a,s){var o,l,u,m,c;e.className="learn-result "+(a?"ok":"fail"),e.replaceChildren(_("p",{class:"learn-result-head"},a?`🎉 ${p("web_learn_passed")}`:p("web_learn_failed")));for(const d of n)e.append(_("p",{},`✗ ${p("web_learn_missing_fmt",pN(T[d]))}`));s&&e.append(_("p",{},`✗ ${p("web_visubot_depth_fmt",s)}`));const r=_("ul",{class:"learn-tests",dir:"auto"});for(const d of t){const h=d.test.world?t.filter(x=>x.test.world).indexOf(d)+1:0,g=d.test.world?`🗺 ${p("web_visubot_world_fmt",h)}`:d.test.actions?`🤖 ${p("web_visubot_actions")}`:d.test.sensors?`🎛 ${Object.entries(d.test.sensors).map(([x,v])=>`mbot.${x}() = ${v.join(" → ")}`).join(", ")}`:d.test.drive?`🤖 ${p("web_visubot_drive")}`:d.test.inputs.length?p("web_learn_input_fmt",d.test.inputs.join(", ")):p("web_learn_no_input"),f=[`${d.passed?"✓":"✗"} ${g}`],b=_("div",{class:"learn-test-detail"});if(d.test.drive&&b.append(_("span",{},`${p("web_learn_expected")}: `,_("code",{},mi(d.test.drive)||"–")),_("span",{},`${p("web_learn_actual")}: `,_("code",{},mi(d.result.drive??[])||"–"))),d.test.actions&&b.append(_("span",{},`${p("web_learn_expected")}: `,_("code",{},mi(d.test.actions)||"–")),_("span",{},`${p("web_learn_actual")}: `,_("code",{},mi(d.result.actions??[])||"–"))),d.test.led!==void 0){const x=v=>p(v?"web_visubot_led_on":"web_visubot_led_off");b.append(_("span",{},`💡 ${p("web_learn_expected")}: ${x(d.test.led)} · ${p("web_learn_actual")}: ${x(d.result.led)}`))}if(d.test.tone!==void 0){const x=v=>p(v?"web_visubot_tone_yes":"web_visubot_tone_no");b.append(_("span",{},`🔊 ${p("web_learn_expected")}: ${x(d.test.tone)} · ${p("web_learn_actual")}: ${x(d.result.tone)}`))}d.test.screen!==void 0&&b.append(_("span",{},`📺 ${p("web_learn_expected")}: `,_("code",{},d.test.screen),` · ${p("web_learn_actual")}: `,_("code",{},d.result.screen??"–"))),d.test.world&&(((l=(o=ts(d.test.world))==null?void 0:o.goals)!=null&&l.length||(m=(u=ts(d.test.world))==null?void 0:u.targets)!=null&&m.length)&&b.append(_("span",{},d.result.atGoal?`✓ ${p("web_visubot_goal_reached")}`:`✗ ${p("web_visubot_goal_missed")}`)),d.result.bumps&&b.append(_("span",{class:"learn-error"},`⚠︎ ${p("web_visubot_bumps")}: ${d.result.bumps}`))),(!d.test.drive&&!d.test.world&&!d.test.sensors&&!d.test.actions||d.result.outputs.length)&&b.append(_("span",{},`${p("web_learn_expected")}: `,_("code",{},d.test.expected.join(" | ")||"–")),_("span",{},`${p("web_learn_actual")}: `,_("code",{},d.result.outputs.join(" | ")||"–")));for(const x of d.test.files??[])b.append(_("span",{},`📄 ${x.name}, ${p("web_learn_expected")}: `,_("code",{},x.lines.join(" | ")||"–")),_("span",{},`📄 ${x.name}, ${p("web_learn_actual")}: `,_("code",{},pg((c=d.result.files)==null?void 0:c.get(x.name)).join(" | ")||"–")));!d.passed&&!d.result.error&&qx(d.result.outputs,d.test.expected)&&b.append(_("span",{class:"learn-error"},p("web_learn_missing_line_break"))),d.result.error&&b.append(_("span",{class:"learn-error"},i1(d.result.error))),d.result.missingInput&&b.append(_("span",{class:"learn-error"},p("web_learn_missing_input"))),d.result.tooManySteps&&b.append(_("span",{class:"learn-error"},p("web_learn_too_many_steps"))),!d.passed&&d.result.unusedInputs&&b.append(_("span",{class:"learn-error"},p("web_learn_unused_input"))),r.append(_("li",{class:d.passed?"ok":"fail"},...f,b))}e.append(r)}renderCompetences(e){const t=_("aside",{class:"learn-competences"},_("p",{class:"learn-competences-title"},p("web_learn_competences_intro"))),n=_("ul",{});for(const a of e)n.append(Ve("li",{},je(a)));return t.append(n),t}renderChecklist(e,t,n){const a=[{value:"umbrella",icon:"☂️",label:p("web_learn_rating_umbrella")},{value:"cloud",icon:"⛅",label:p("web_learn_rating_cloud")},{value:"sun",icon:"☀️",label:p("web_learn_rating_sun")}],s=_("div",{class:"learn-checklist-wrap"}),r=_("p",{class:"learn-rating-legend"});for(const l of a)r.append(_("span",{},`${l.icon} ${l.label}`));const o=_("ul",{class:"learn-checklist"});return s.append(r,o),e.forEach((l,u)=>{var v;const m=`${t}-${u}`,c=n?(v=xe.lesson(n.id).checks)==null?void 0:v[m]:void 0;let d=c===!0?"sun":c||void 0;const h=Ve("span",{class:"learn-check-text"},je(l.text)),g=_("span",{class:"learn-rating",role:"group","aria-label":h.textContent??""}),f=a.map(w=>{const z=_("button",{class:"learn-rating-button",title:w.label,"aria-label":w.label},w.icon);return z.addEventListener("click",()=>{if(d=d===w.value?void 0:w.value,b(),!n)return;const I={...xe.lesson(n.id).checks??{}};d?I[m]=d:delete I[m],xe.updateLesson(n.id,{checks:Object.keys(I).length?I:void 0})}),z}),b=()=>{f.forEach((w,z)=>w.setAttribute("aria-pressed",String(a[z].value===d))),x.dataset.rating=d??""};g.append(...f);const x=_("li",{},h,g);if(n&&l.step!==void 0){const w=l.step,z=p("web_learn_step_fmt",w+1,n.steps[w].title),I=_("button",{class:"link-button learn-check-link",title:z,"aria-label":`${p("web_learn_review")}: ${z}`},p("web_learn_review"));I.addEventListener("click",()=>{this.returnTo={lesson:n.id,step:xe.lesson(n.id).step,scroll:this.body.scrollTop},this.goToStep(n,w)}),x.append(I)}b(),o.append(x)}),s}renderQuiz(e,t,n){const a=_("div",{class:"learn-quiz"}),s=_("p",{class:"learn-score",role:"status"}),r=()=>n?xe.lesson(n.id).quiz??{}:{},o=_("div",{class:"learn-review"}),l=()=>{const u=r(),m=(f,b)=>f.pairs?f.pairs.every((x,v)=>u[`${t}-${b}-${v}`]!==void 0):u[`${t}-${b}`]!==void 0,c=(f,b)=>{var x;return!!(f.pairs?f.pairs.every((v,w)=>Zm(f)[u[`${t}-${b}-${w}`]]===f.pairs[w].right):(x=f.options[u[`${t}-${b}`]])!=null&&x.correct)},d=e.filter(m).length,h=e.filter(c).length,g=d===e.length;s.textContent=g?p("web_learn_score_fmt",h,e.length):"",o.replaceChildren(),g&&n&&this.fillChecklistReview(o,n,e,f=>c(e[f],f))};return e.forEach((u,m)=>{const c=`${t}-${m}`,d=_("fieldset",{},Ve("legend",{},je(u.question))),h=Ve("p",{class:"learn-explanation"},je(u.explanation??""));if(u.pairs){d.append(this.renderMatch(u,c,r,n,h,l),h),a.append(d);return}const g=f=>{d.querySelectorAll("button").forEach((b,x)=>{b.classList.toggle("right",f!==void 0&&u.options[x].correct),b.classList.toggle("wrong",f===x&&!u.options[x].correct),b.setAttribute("aria-pressed",String(f===x))}),h.hidden=f===void 0||!u.explanation};u.options.forEach((f,b)=>{const x=Ve("button",{class:"learn-option"},je(f.text));x.addEventListener("click",()=>{n&&xe.updateLesson(n.id,{quiz:{...r(),[c]:b}}),g(b),l()}),d.append(x)}),d.append(h),g(r()[c]),a.append(d)}),a.append(s,o),l(),a}fillChecklistReview(e,t,n,a){const s={sun:"☀️",cloud:"⛅",umbrella:"☂️"},r=xe.lesson(t.id).checks??{},o=[];let l=0;t.steps.forEach((u,m)=>u.blocks.forEach((c,d)=>{c.kind==="checklist"&&c.items.forEach((h,g)=>{const f=r[`${m}-${d}-${g}`],b=f===!0?"sun":f||void 0,x=h.step===void 0?[]:n.map((S,k)=>S.step===h.step?k:-1).filter(S=>S>=0),v=x.filter(S=>!a(S));let w="";b==="sun"&&v.length?w=p("web_learn_review_overrated_fmt",v.map(S=>S+1).join(", ")):b&&b!=="sun"&&x.length&&!v.length&&(w=p("web_learn_review_underrated")),w&&l++;const z=_("li",{class:w?"learn-review-deviation":""}),I=Ve("span",{class:"learn-check-text"},je(h.text));if(w&&I.append(_("br",{}),_("em",{},w)),z.append(I,_("span",{class:"learn-review-icon","aria-label":p(b?`web_learn_rating_${b}`:"web_learn_review_unrated")},b?s[b]:"–")),w&&b==="sun"&&h.step!==void 0){const S=h.step,k=_("button",{class:"link-button learn-check-link"},p("web_learn_review"));k.addEventListener("click",()=>{this.returnTo={lesson:t.id,step:xe.lesson(t.id).step,scroll:this.body.scrollTop},this.goToStep(t,S)}),z.append(k)}o.push(z)})})),o.length&&e.append(_("p",{class:"learn-review-title"},`📋 ${p("web_learn_review_title")}`),_("p",{},p(l?"web_learn_review_hint":"web_learn_review_match")),_("ul",{class:"learn-checklist"},...o))}renderMatch(e,t,n,a,s,r){const o=e.pairs,l=Zm(e),u=_("div",{class:"learn-match"});let m={};const c=()=>a?n():m,d=b=>a?xe.updateLesson(a.id,{quiz:b}):m=b,h=b=>c()[`${t}-${b}`],g=o.map(b=>{const x=_("select",{class:"learn-match-select"});x.append(_("option",{value:""},"–")),l.forEach((w,z)=>x.append(_("option",{value:String(z)},w)));const v=Ve("label",{class:"learn-match-left"},je(b.left));return v.append(x),u.append(v),x}),f=()=>{const b=o.every((x,v)=>h(v)!==void 0);g.forEach((x,v)=>{const w=h(v);x.value=w===void 0?"":String(w),x.classList.toggle("right",b&&l[w]===o[v].right),x.classList.toggle("wrong",b&&l[w]!==o[v].right)}),s.hidden=!b||!e.explanation};return g.forEach((b,x)=>b.addEventListener("change",()=>{const v={...c()};b.value===""?delete v[`${t}-${x}`]:v[`${t}-${x}`]=Number(b.value),d(v),f(),r()})),f(),u}}function Zm(i){return(i.pairs??[]).map(e=>e.right).sort((e,t)=>e.localeCompare(t,"de"))}function xN(i){const e=Dg(i),t=e==="beide"?"web_learn_solve_in_both":e==="code"?"web_learn_solve_in_code":"web_learn_solve_in_editor",n={editor:p("web_editor_title"),code:p("web_live_title")},a=e==="beide"?["editor","code"]:[e==="code"?"code":"editor"],s=_("p",{class:`learn-where learn-where-${e}`});for(const r of p(t,...a).split(/(\u0001(?:editor|code))/))if(r==="editor"||r==="code"){const o=r.slice(1);s.append(_("span",{class:`area-name area-${o}`},n[o]))}else r&&s.append(r);return s}const vN=""+new URL("visubot-CyGFOI9V.webp",import.meta.url).href,hr="visustruct.visubot";function gr(){try{return localStorage.getItem(hr)}catch{return null}}function wi(){const i=gr();return i==="1"||i==="kurs"?"on":"off"}const Yg=()=>gr()==="2";function tl(){try{localStorage.setItem(hr,"2")}catch{}}const $g=()=>gr()==="3";function Kg(){try{localStorage.setItem(hr,"3")}catch{}}const Xg=()=>gr()!==null;function ns(i){try{localStorage.setItem(hr,i==="on"?"1":"0")}catch{}}const yN=`VisuBot`,qn=()=>wi()!=="off",Lm=i=>i.replace(/[&<>"]/g,e=>({"&":"&","<":"<",">":">",'"':"""})[e]);function nl(){const i=Yg()?"object":$g()?"flow":wi(),e=(n,a)=>``,t={off:"web_visubot_world_visustruct_hint",on:"web_visubot_world_visubot_hint",object:"web_visuobject_world_hint",flow:"web_visuflow_world_hint"}[i];return`
+${a}`));this.body.append(s),this.foldReference(s)}}foldReference(e){const t="visustruct.reference.open";let n=[];try{n=JSON.parse(localStorage.getItem(t)??"[]")}catch{}for(const a of[...e.querySelectorAll("h2")]){const s=a.textContent??"",r=_("details",{class:"reference-group"});r.open=n.includes(s);const o=_("summary",{},s);for(a.replaceWith(r),r.append(o);r.nextSibling&&r.nextSibling.nodeName!=="H2";)r.append(r.nextSibling);r.addEventListener("toggle",()=>{n=r.open?[...new Set([...n,s])]:n.filter(l=>l!==s);try{localStorage.setItem(t,JSON.stringify(n))}catch{}})}}showReference(){this.tab="reference",this.persist(),this.render()}persist(){xe.setView({tab:this.tab,lesson:this.lessonId,task:this.taskId})}showLesson(e){zt.some(t=>t.id===e)&&this.openLesson(e)}openLesson(e){this.tab="lessons",this.lessonId=e,this.returnTo=void 0,this.persist(),this.render(),this.body.scrollTop=0}renderLessonList(){this.body.append(_("p",{class:"hint"},p("web_learn_intro")));for(const e of xF()){this.body.append(_("h3",{class:"learn-section"},e.name));const t=_("ol",{class:"learn-list"});for(const n of e.lessons){const a=xe.lesson(n.id),s=a.done?"✓":a.step>0?p("web_learn_step_of_fmt",a.step+1,n.steps.length):"",r=_("button",{class:"learn-item"+(a.done?" done":""),"data-lesson":n.id},_("span",{class:"learn-num"},String(n.number)),_("span",{class:"learn-item-text"},_("strong",{},n.robot?`🤖 ${n.title}`:n.title),_("small",{},n.summary)),_("span",{class:"learn-status"},s));r.addEventListener("click",()=>this.openLesson(n.id)),t.append(_("li",{},r))}this.body.append(t)}this.body.append(this.renderTeacherBox())}renderLesson(e){var u;const t=xe.lesson(e.id),n=Math.min(t.step,e.steps.length-1),a=e.steps[n],s=_("button",{class:"learn-back"},`← ${p("web_learn_all_lessons")}`);s.addEventListener("click",()=>this.openLesson(void 0));const r=_("nav",{class:"learn-progress","aria-label":p("web_learn_step_of_fmt",n+1,e.steps.length)});r.append(...e.steps.map((m,c)=>{const d=p("web_learn_step_fmt",c+1,m.title),h=cthis.goToStep(e,c)),g})),this.body.append(_("div",{class:"learn-lesson-head"},_("div",{class:"learn-head-row"},s,this.stepNav(e,n,t.done,"learn-nav learn-nav-top")),_("p",{class:"learn-kicker"},`${p("web_learn_lesson_fmt",e.number)} · ${e.section}${e.robot?" · 🤖 VisuBot":""}`),_("h2",{class:"learn-title"},_("span",{class:"learn-num","aria-hidden":"true"},String(e.number)),e.title),r,_("h3",{class:"learn-step-title"},`${n+1}. ${a.title}`)));const o=((u=this.returnTo)==null?void 0:u.lesson)===e.id&&this.returnTo.step!==n?this.returnTo:void 0,l=()=>{const m=_("button",{class:"learn-return"},`↩ ${p("web_learn_back_to_checklist")}`);return m.addEventListener("click",()=>{this.returnTo=void 0,this.goToStep(e,o.step),this.body.scrollTop=o.scroll}),m};o&&this.body.append(l()),a.blocks.forEach((m,c)=>this.body.append(this.renderBlock(m,`${n}-${c}`,e))),Om(this.body),HN(this.body),this.openNeededColumns(a.blocks),Pm(this.body,es),this.body.append(this.stepNav(e,n,t.done,"learn-nav")),o&&this.body.append(l())}stepNav(e,t,n,a){const s=_("div",{class:a}),r=_("button",{},`← ${p("web_learn_back")}`);if(r.disabled=t===0,r.addEventListener("click",()=>this.goToStep(e,t-1)),s.append(r),tthis.goToStep(e,t+1)),s.append(o)}else{const o=_("button",{class:"primary"},n?`✓ ${p("web_learn_done")}`:p("web_learn_finish"));o.addEventListener("click",()=>{xe.updateLesson(e.id,{done:!0});const l=zt.find(u=>u.number===e.number+1);this.openLesson(l==null?void 0:l.id)}),s.append(o)}return s}goToStep(e,t){xe.updateLesson(e.id,{step:t}),this.render(),this.body.scrollTop=0}openNeededColumns(e){const t=e.flatMap(n=>n.kind==="exercise"?[n.exercise]:[]);pF(this.body)?(this.host.showEditor(),hF(this.body)&&this.host.reveal(["palette"])):gF(this.body)?this.host.showFiles():t.some(n=>n.code!=="java")?this.host.showEditor():(t.length>0||this.body.querySelector(".lesson-code[data-lang=java]"))&&this.host.showJava(),fF(this.body)&&this.host.showLiveCode()}renderTaskList(){this.body.append(_("p",{class:"hint"},p("web_learn_tasks_intro")));const e=_("ul",{class:"learn-list"});for(const t of Dn){const n=this.taskExercises(t),a=n.length>0&&n.every(o=>xe.exercise(o.id).done),s=zt.find(o=>o.number===t.after),r=_("button",{class:"learn-item"+(a?" done":""),"data-task":t.id},_("span",{class:"learn-num","aria-label":p("web_learn_level_fmt",t.level)},"★".repeat(t.level)),_("span",{class:"learn-item-text"},_("strong",{},t.title),_("small",{},s?p("web_learn_after_fmt",s.number,s.title):"")),_("span",{class:"learn-status"},a?"✓":""));r.addEventListener("click",()=>{this.taskId=t.id,this.persist(),this.render(),this.body.scrollTop=0}),e.append(_("li",{},r))}this.body.append(e,this.renderTeacherBox())}renderTeacherBox(){const e=_("details",{class:"learn-teacher"},_("summary",{},p("web_learn_teacher")));if(zm()){e.setAttribute("open","");const s=_("button",{},p("web_learn_teacher_off"));return s.addEventListener("click",()=>{LN(),this.render()}),e.append(_("p",{},p("web_learn_teacher_on")),s),e}const t=_("input",{type:"password",autocomplete:"off","aria-label":p("web_learn_teacher_code"),placeholder:p("web_learn_teacher_code")}),n=_("p",{class:"learn-result",role:"status"}),a=_("form",{class:"group"},t,_("button",{type:"submit"},p("web_learn_teacher_unlock")));return a.addEventListener("submit",async s=>{s.preventDefault(),await ZN(t.value)?this.render():(n.className="learn-result info",n.textContent=p("web_learn_teacher_wrong"))}),e.append(_("p",{class:"hint"},p("web_learn_teacher_intro")),a,n),e}taskExercises(e){return e.blocks.flatMap(t=>t.kind==="exercise"?[t.exercise]:[])}renderTask(e){const t=_("button",{class:"learn-back"},`← ${p("web_learn_all_tasks")}`);t.addEventListener("click",()=>{this.taskId=void 0,this.persist(),this.render()});const n=zt.find(a=>a.number===e.after);if(this.body.append(t,_("h2",{class:"learn-title"},e.title)),n){const a=_("button",{class:"link-button"},p("web_learn_after_fmt",n.number,n.title));a.addEventListener("click",()=>this.openLesson(n.id)),this.body.append(_("p",{class:"learn-kicker"},a))}e.blocks.forEach((a,s)=>this.body.append(this.renderBlock(a,`task-${s}`))),Om(this.body),this.openNeededColumns(e.blocks),Pm(this.body,es)}renderBlock(e,t,n){switch(e.kind){case"markdown":return this.withOpenButtons(Ve("div",{class:"learn-text"},jn(e.text)));case"diagram":return this.renderDiagram(e.file,e.caption);case"exercise":return this.renderExercise(e.exercise);case"competences":return this.renderCompetences(e.items);case"checklist":return this.renderChecklist(e.items,t,n);case"quiz":return this.renderQuiz(e.questions,t,n);case"brag":return this.renderBrag(e.text,e.tip);case"images":return this.renderImages(e.files,e.caption);case"graphic":return e.animated?this.renderAnimation(e.file,e.caption):this.renderGraphic(e.file,e.caption,e.labeled);case"game":return this.renderGame(e.game);case"roundGame":return qN(e.game,x1);case"rescueGame":return KN(e.game,x1);case"driveGame":return iF(e.game,x1);case"crosswordGame":return XN(e.game,x1);case"caesar":return RN(e.key,e.text);case"cloze":return aF(e.cloze);case"pap":return mF(e.pap);case"textFile":return Ng(e.name,e.content);case"robotModel":return GN(e.focus,e.view,e.spin);case"robotQuiz":return VN(e.tasks,e.done)}}renderBrag(e,t=!1){const n=_("aside",{class:"learn-brag"});n.append(_("img",{src:x1,alt:"",width:"48",height:"48"}));const a=_("div",{},_("p",{class:"learn-brag-title"},p(t?"web_learn_ludwig_tip":"web_learn_brag")));return a.append(Ve("div",{class:"learn-text"},jn(e))),n.append(a),n}renderGame(e){const n=_("section",{class:"learn-game"}),a=_("div",{class:"learn-game-head"});a.append(_("img",{src:x1,alt:"",width:"40",height:"40"}),_("strong",{},p("web_game_title")));const s=_("p",{class:"learn-game-status"}),r=_("div",{class:"learn-game-stage"});n.append(a,s,r);let o=0,l=0;const u=()=>{const d=t4(e,o,10);s.textContent=`${p("web_game_round_fmt",o+1,10)} · ${p("web_game_score_fmt",l)}`;const h=_("div",{class:"learn-game-values mono"});for(const[w,z]of n4(d))h.append(_("code",{},`${w} = ${z}`));const g=_("div",{class:"group learn-game-answers"}),f=_("button",{class:"learn-game-true"},`✓ ${p("web_game_true")}`),b=_("button",{class:"learn-game-false"},`✗ ${p("web_game_false")}`);g.append(f,b);const x=_("div",{class:"learn-game-feedback",role:"status"}),v=w=>{f.disabled=b.disabled=!0;const z=w===d.answer;z&&l++,s.textContent=`${p("web_game_round_fmt",o+1,10)} · ${p("web_game_score_fmt",l)}`,x.className=`learn-game-feedback ${z?"right":"wrong"}`;const I=_("div",{class:"learn-game-steps mono"});Xx(d.condition,d.values).forEach((k,D)=>I.append(_("div",{},`${D?"→ ":""}${k}`)));const S=_("button",{class:"primary"},o+1<10?p("web_game_next"):p("web_game_finish"));S.addEventListener("click",()=>{o++,o<10?u():m()}),x.replaceChildren(_("p",{},p(z?"web_game_right":"web_game_wrong")),I,S),S.focus()};f.addEventListener("click",()=>v(!0)),b.addEventListener("click",()=>v(!1)),r.replaceChildren(h,_("div",{class:"learn-game-condition mono"},d.condition),g,x)},m=()=>{s.textContent="";const d=_("button",{class:"primary"},p("web_game_again"));d.addEventListener("click",()=>{o=l=0,u()}),r.replaceChildren(_("p",{class:"learn-game-result"},p("web_game_done_fmt",l,10)),_("p",{},p(l===10?"web_game_perfect":l>=10*.7?"web_game_good":"web_game_practice")),d)},c=_("button",{class:"primary"},p("web_game_start"));return c.addEventListener("click",u),r.append(_("p",{},p("web_game_intro")),c),n}renderImages(e,t){const n=_("figure",{class:"learn-figure"}),a=_("div",{class:"learn-images"});for(const s of e){const r=va(s);r&&a.append(_("img",{src:r,alt:"",loading:"lazy"}))}return n.append(a),t&&n.append(Ve("figcaption",{},je(t))),n}renderGraphic(e,t,n){const a=_("figure",{class:"learn-figure"}),s=va(e),r=n?va(n):void 0;if(s&&r){const o=_("img",{class:"learn-graphic",src:s,alt:"",loading:"lazy"}),l=_("button",{class:"learn-graphic-toggle",type:"button",title:p("web_learn_graphic_labels"),"aria-pressed":"false"},o);l.addEventListener("click",()=>{const u=l.getAttribute("aria-pressed")!=="true";l.setAttribute("aria-pressed",String(u)),o.src=u?r:s}),a.append(l,_("p",{class:"learn-graphic-hint"},p("web_learn_graphic_labels")))}else s&&a.append(_("img",{class:"learn-graphic",src:s,alt:"",loading:"lazy"}));return t&&a.append(Ve("figcaption",{},je(t))),a}renderAnimation(e,t){const n=_("figure",{class:"learn-figure"}),a=va(e);if(!a)return n;const s=_("div",{class:"learn-graphic learn-animation"}),r=_("button",{class:"learn-replay",type:"button"},`↻ ${p("web_learn_replay")}`);let o=()=>{};return fetch(a).then(l=>l.text()).then(l=>{var d,h;s.innerHTML=l;const u=s.querySelector("svg"),m=(h=(d=u==null?void 0:u.getAttribute("class"))==null?void 0:d.match(/(\S+-)svg\b/))==null?void 0:h[1];if(!u||!m)return;if(o=()=>{u.classList.remove(`${m}play`),u.getBoundingClientRect(),u.classList.add(`${m}play`)},typeof IntersectionObserver>"u")return o();const c=new IntersectionObserver(g=>{g.some(f=>f.isIntersecting)&&(c.disconnect(),o())},{threshold:.6});c.observe(s)}).catch(()=>s.append(_("img",{src:a,alt:""}))),r.addEventListener("click",()=>o()),n.append(s,r),t&&n.append(Ve("figcaption",{},je(t))),n}withOpenButtons(e){for(const t of e.querySelectorAll("pre.lesson-code[data-open=editor]")){const n=t.textContent??"",a=_("button",{class:"learn-open-code"},p("web_learn_open_in_editor"));a.addEventListener("click",()=>this.host.openJavaCode(n)),t.after(a)}return e}renderDiagram(e,t){const n=di(e),a=_("figure",{class:"learn-figure"});if(!n)return a;const s=this.host.preview(n);s&&a.append(_("div",{class:"learn-preview",dir:"ltr"},s)),t&&a.append(Ve("figcaption",{},je(t)));const r=_("button",{},p("web_learn_open_in_editor"));return r.addEventListener("click",()=>this.host.openDiagram(n,e)),a.append(r),a}renderExercise(e){const t=_("section",{class:"learn-exercise","data-exercise":e.id}),n=()=>xe.exercise(e.id),a=_("span",{class:"learn-badge"},`✓ ${p("web_learn_solved")}`);a.hidden=!n().done,t.append(_("h4",{},`${p("web_learn_exercise")}: ${e.title}`,a),zF(e),Ve("div",{class:"learn-text"},jn(e.task)));const s=_("div",{class:"learn-result",role:"status"}),r=_("div",{class:"learn-hints"}),o=_("div",{class:"group"}),l=_("button",{class:"primary"},p("web_learn_open_exercise"));l.addEventListener("click",()=>{const c=n().xml;let d=Mm(e);if(c)try{d=n0(c)}catch{}this.host.openExercise(e,d)});const u=_("button",{},p("web_learn_check"));if(u.addEventListener("click",()=>{const c=this.host.exerciseDocument(e.id);if(!c){s.className="learn-result info",s.textContent=p("web_learn_open_first");return}if(c.elements.every(Kl)){s.className="learn-result info",s.textContent=p("web_learn_empty");return}this.host.stopSimulation();const d=Qx(c,e.tests,this.host.subprogramsFor(e.id),ts),h=Ux(c),g=e.requires.map(x=>x==="forZaehlSchleife"?"forSchleife":x).filter(x=>x in T&&!h.has(T[x])),f=e.loopDepth!==void 0&&Yo(c.elements)x.passed)&&g.length===0&&!f;this.showResult(s,d,g,b,f),b&&(xe.updateExercise(e.id,{done:!0}),a.hidden=!1)}),o.append(l,u),e.hints.length>0){const c=_("button",{},p("web_learn_hint"));c.addEventListener("click",()=>{const d=r.children.length;if(d>=e.hints.length)return;const h=e.hints.length>1?`**${p("web_learn_hint_fmt",d+1,e.hints.length)}:** `:"";r.append(Ve("aside",{class:"lesson-note"},jn(h+e.hints[d]))),c.textContent=p("web_learn_hint_more"),c.toggleAttribute("disabled",d+1>=e.hints.length)}),o.append(c)}const m=_("button",{class:"danger-text"},p("web_learn_reset"));if(m.addEventListener("click",()=>{if(m.dataset.confirm!=="1"){m.dataset.confirm="1",m.textContent=p("web_learn_reset_confirm"),setTimeout(()=>{m.dataset.confirm="",m.textContent=p("web_learn_reset")},4e3);return}xe.resetExercise(e.id),this.host.resetExercise(e.id,Mm(e)),a.hidden=!0,s.replaceChildren(),s.className="learn-result",m.dataset.confirm="",m.textContent=p("web_learn_reset")}),o.append(m),t.append(o,r,s),zm()&&e.solution){const c=di(e.solution);if(c){const d=_("details",{class:"learn-solution"},_("summary",{},p("web_learn_solution")));d.addEventListener("toggle",()=>{if(!d.open||d.querySelector(".learn-preview"))return;const h=this.host.preview(c);h&&d.append(_("div",{class:"learn-preview",dir:"ltr"},h));const g=_("button",{},p("web_learn_open_in_editor"));g.addEventListener("click",()=>{this.host.openDiagram(c,e.solution);for(const f of e.subprograms){const b=di(f);b&&this.host.openDiagram(b,f)}});for(const f of e.subprograms){const b=di(f),x=b&&this.host.preview(b);x&&d.append(_("div",{class:"learn-preview",dir:"ltr"},x))}d.append(g)}),t.append(d)}}return t}showResult(e,t,n,a,s){var o,l,u,m,c;e.className="learn-result "+(a?"ok":"fail"),e.replaceChildren(_("p",{class:"learn-result-head"},a?`🎉 ${p("web_learn_passed")}`:p("web_learn_failed")));for(const d of n)e.append(_("p",{},`✗ ${p("web_learn_missing_fmt",vF(T[d]))}`));s&&e.append(_("p",{},`✗ ${p("web_visubot_depth_fmt",s)}`));const r=_("ul",{class:"learn-tests",dir:"auto"});for(const d of t){const h=d.test.world?t.filter(x=>x.test.world).indexOf(d)+1:0,g=d.test.world?`🗺 ${p("web_visubot_world_fmt",h)}`:d.test.actions?`🤖 ${p("web_visubot_actions")}`:d.test.sensors?`🎛 ${Object.entries(d.test.sensors).map(([x,v])=>`mbot.${x}() = ${v.join(" → ")}`).join(", ")}`:d.test.drive?`🤖 ${p("web_visubot_drive")}`:d.test.inputs.length?p("web_learn_input_fmt",d.test.inputs.join(", ")):p("web_learn_no_input"),f=[`${d.passed?"✓":"✗"} ${g}`],b=_("div",{class:"learn-test-detail"});if(d.test.drive&&b.append(_("span",{},`${p("web_learn_expected")}: `,_("code",{},mi(d.test.drive)||"–")),_("span",{},`${p("web_learn_actual")}: `,_("code",{},mi(d.result.drive??[])||"–"))),d.test.actions&&b.append(_("span",{},`${p("web_learn_expected")}: `,_("code",{},mi(d.test.actions)||"–")),_("span",{},`${p("web_learn_actual")}: `,_("code",{},mi(d.result.actions??[])||"–"))),d.test.led!==void 0){const x=v=>p(v?"web_visubot_led_on":"web_visubot_led_off");b.append(_("span",{},`💡 ${p("web_learn_expected")}: ${x(d.test.led)} · ${p("web_learn_actual")}: ${x(d.result.led)}`))}if(d.test.tone!==void 0){const x=v=>p(v?"web_visubot_tone_yes":"web_visubot_tone_no");b.append(_("span",{},`🔊 ${p("web_learn_expected")}: ${x(d.test.tone)} · ${p("web_learn_actual")}: ${x(d.result.tone)}`))}d.test.screen!==void 0&&b.append(_("span",{},`📺 ${p("web_learn_expected")}: `,_("code",{},d.test.screen),` · ${p("web_learn_actual")}: `,_("code",{},d.result.screen??"–"))),d.test.world&&(((l=(o=ts(d.test.world))==null?void 0:o.goals)!=null&&l.length||(m=(u=ts(d.test.world))==null?void 0:u.targets)!=null&&m.length)&&b.append(_("span",{},d.result.atGoal?`✓ ${p("web_visubot_goal_reached")}`:`✗ ${p("web_visubot_goal_missed")}`)),d.result.bumps&&b.append(_("span",{class:"learn-error"},`⚠︎ ${p("web_visubot_bumps")}: ${d.result.bumps}`))),(!d.test.drive&&!d.test.world&&!d.test.sensors&&!d.test.actions||d.result.outputs.length)&&b.append(_("span",{},`${p("web_learn_expected")}: `,_("code",{},d.test.expected.join(" | ")||"–")),_("span",{},`${p("web_learn_actual")}: `,_("code",{},d.result.outputs.join(" | ")||"–")));for(const x of d.test.files??[])b.append(_("span",{},`📄 ${x.name}, ${p("web_learn_expected")}: `,_("code",{},x.lines.join(" | ")||"–")),_("span",{},`📄 ${x.name}, ${p("web_learn_actual")}: `,_("code",{},pg((c=d.result.files)==null?void 0:c.get(x.name)).join(" | ")||"–")));!d.passed&&!d.result.error&&qx(d.result.outputs,d.test.expected)&&b.append(_("span",{class:"learn-error"},p("web_learn_missing_line_break"))),d.result.error&&b.append(_("span",{class:"learn-error"},i1(d.result.error))),d.result.missingInput&&b.append(_("span",{class:"learn-error"},p("web_learn_missing_input"))),d.result.tooManySteps&&b.append(_("span",{class:"learn-error"},p("web_learn_too_many_steps"))),!d.passed&&d.result.unusedInputs&&b.append(_("span",{class:"learn-error"},p("web_learn_unused_input"))),r.append(_("li",{class:d.passed?"ok":"fail"},...f,b))}e.append(r)}renderCompetences(e){const t=_("aside",{class:"learn-competences"},_("p",{class:"learn-competences-title"},p("web_learn_competences_intro"))),n=_("ul",{});for(const a of e)n.append(Ve("li",{},je(a)));return t.append(n),t}renderChecklist(e,t,n){const a=[{value:"umbrella",icon:"☂️",label:p("web_learn_rating_umbrella")},{value:"cloud",icon:"⛅",label:p("web_learn_rating_cloud")},{value:"sun",icon:"☀️",label:p("web_learn_rating_sun")}],s=_("div",{class:"learn-checklist-wrap"}),r=_("p",{class:"learn-rating-legend"});for(const l of a)r.append(_("span",{},`${l.icon} ${l.label}`));const o=_("ul",{class:"learn-checklist"});return s.append(r,o),e.forEach((l,u)=>{var v;const m=`${t}-${u}`,c=n?(v=xe.lesson(n.id).checks)==null?void 0:v[m]:void 0;let d=c===!0?"sun":c||void 0;const h=Ve("span",{class:"learn-check-text"},je(l.text)),g=_("span",{class:"learn-rating",role:"group","aria-label":h.textContent??""}),f=a.map(w=>{const z=_("button",{class:"learn-rating-button",title:w.label,"aria-label":w.label},w.icon);return z.addEventListener("click",()=>{if(d=d===w.value?void 0:w.value,b(),!n)return;const I={...xe.lesson(n.id).checks??{}};d?I[m]=d:delete I[m],xe.updateLesson(n.id,{checks:Object.keys(I).length?I:void 0})}),z}),b=()=>{f.forEach((w,z)=>w.setAttribute("aria-pressed",String(a[z].value===d))),x.dataset.rating=d??""};g.append(...f);const x=_("li",{},h,g);if(n&&l.step!==void 0){const w=l.step,z=p("web_learn_step_fmt",w+1,n.steps[w].title),I=_("button",{class:"link-button learn-check-link",title:z,"aria-label":`${p("web_learn_review")}: ${z}`},p("web_learn_review"));I.addEventListener("click",()=>{this.returnTo={lesson:n.id,step:xe.lesson(n.id).step,scroll:this.body.scrollTop},this.goToStep(n,w)}),x.append(I)}b(),o.append(x)}),s}renderQuiz(e,t,n){const a=_("div",{class:"learn-quiz"}),s=_("p",{class:"learn-score",role:"status"}),r=()=>n?xe.lesson(n.id).quiz??{}:{},o=_("div",{class:"learn-review"}),l=()=>{const u=r(),m=(f,b)=>f.pairs?f.pairs.every((x,v)=>u[`${t}-${b}-${v}`]!==void 0):u[`${t}-${b}`]!==void 0,c=(f,b)=>{var x;return!!(f.pairs?f.pairs.every((v,w)=>Zm(f)[u[`${t}-${b}-${w}`]]===f.pairs[w].right):(x=f.options[u[`${t}-${b}`]])!=null&&x.correct)},d=e.filter(m).length,h=e.filter(c).length,g=d===e.length;s.textContent=g?p("web_learn_score_fmt",h,e.length):"",o.replaceChildren(),g&&n&&this.fillChecklistReview(o,n,e,f=>c(e[f],f))};return e.forEach((u,m)=>{const c=`${t}-${m}`,d=_("fieldset",{},Ve("legend",{},je(u.question))),h=Ve("p",{class:"learn-explanation"},je(u.explanation??""));if(u.pairs){d.append(this.renderMatch(u,c,r,n,h,l),h),a.append(d);return}const g=f=>{d.querySelectorAll("button").forEach((b,x)=>{b.classList.toggle("right",f!==void 0&&u.options[x].correct),b.classList.toggle("wrong",f===x&&!u.options[x].correct),b.setAttribute("aria-pressed",String(f===x))}),h.hidden=f===void 0||!u.explanation};u.options.forEach((f,b)=>{const x=Ve("button",{class:"learn-option"},je(f.text));x.addEventListener("click",()=>{n&&xe.updateLesson(n.id,{quiz:{...r(),[c]:b}}),g(b),l()}),d.append(x)}),d.append(h),g(r()[c]),a.append(d)}),a.append(s,o),l(),a}fillChecklistReview(e,t,n,a){const s={sun:"☀️",cloud:"⛅",umbrella:"☂️"},r=xe.lesson(t.id).checks??{},o=[];let l=0;t.steps.forEach((u,m)=>u.blocks.forEach((c,d)=>{c.kind==="checklist"&&c.items.forEach((h,g)=>{const f=r[`${m}-${d}-${g}`],b=f===!0?"sun":f||void 0,x=h.step===void 0?[]:n.map((S,k)=>S.step===h.step?k:-1).filter(S=>S>=0),v=x.filter(S=>!a(S));let w="";b==="sun"&&v.length?w=p("web_learn_review_overrated_fmt",v.map(S=>S+1).join(", ")):b&&b!=="sun"&&x.length&&!v.length&&(w=p("web_learn_review_underrated")),w&&l++;const z=_("li",{class:w?"learn-review-deviation":""}),I=Ve("span",{class:"learn-check-text"},je(h.text));if(w&&I.append(_("br",{}),_("em",{},w)),z.append(I,_("span",{class:"learn-review-icon","aria-label":p(b?`web_learn_rating_${b}`:"web_learn_review_unrated")},b?s[b]:"–")),w&&b==="sun"&&h.step!==void 0){const S=h.step,k=_("button",{class:"link-button learn-check-link"},p("web_learn_review"));k.addEventListener("click",()=>{this.returnTo={lesson:t.id,step:xe.lesson(t.id).step,scroll:this.body.scrollTop},this.goToStep(t,S)}),z.append(k)}o.push(z)})})),o.length&&e.append(_("p",{class:"learn-review-title"},`📋 ${p("web_learn_review_title")}`),_("p",{},p(l?"web_learn_review_hint":"web_learn_review_match")),_("ul",{class:"learn-checklist"},...o))}renderMatch(e,t,n,a,s,r){const o=e.pairs,l=Zm(e),u=_("div",{class:"learn-match"});let m={};const c=()=>a?n():m,d=b=>a?xe.updateLesson(a.id,{quiz:b}):m=b,h=b=>c()[`${t}-${b}`],g=o.map(b=>{const x=_("select",{class:"learn-match-select"});x.append(_("option",{value:""},"–")),l.forEach((w,z)=>x.append(_("option",{value:String(z)},w)));const v=Ve("label",{class:"learn-match-left"},je(b.left));return v.append(x),u.append(v),x}),f=()=>{const b=o.every((x,v)=>h(v)!==void 0);g.forEach((x,v)=>{const w=h(v);x.value=w===void 0?"":String(w),x.classList.toggle("right",b&&l[w]===o[v].right),x.classList.toggle("wrong",b&&l[w]!==o[v].right)}),s.hidden=!b||!e.explanation};return g.forEach((b,x)=>b.addEventListener("change",()=>{const v={...c()};b.value===""?delete v[`${t}-${x}`]:v[`${t}-${x}`]=Number(b.value),d(v),f(),r()})),f(),u}}function Zm(i){return(i.pairs??[]).map(e=>e.right).sort((e,t)=>e.localeCompare(t,"de"))}function zF(i){const e=Pg(i),t=e==="beide"?"web_learn_solve_in_both":e==="code"?"web_learn_solve_in_code":"web_learn_solve_in_editor",n={editor:p("web_editor_title"),code:p("web_live_title")},a=e==="beide"?["editor","code"]:[e==="code"?"code":"editor"],s=_("p",{class:`learn-where learn-where-${e}`});for(const r of p(t,...a).split(/(\u0001(?:editor|code))/))if(r==="editor"||r==="code"){const o=r.slice(1);s.append(_("span",{class:`area-name area-${o}`},n[o]))}else r&&s.append(r);return s}const IF=""+new URL("visubot-CyGFOI9V.webp",import.meta.url).href,hr="visustruct.visubot";function gr(){try{return localStorage.getItem(hr)}catch{return null}}function wi(){const i=gr();return i==="1"||i==="kurs"?"on":"off"}const Yg=()=>gr()==="2";function tl(){try{localStorage.setItem(hr,"2")}catch{}}const $g=()=>gr()==="3";function Kg(){try{localStorage.setItem(hr,"3")}catch{}}const Xg=()=>gr()!==null;function ns(i){try{localStorage.setItem(hr,i==="on"?"1":"0")}catch{}}const kF=`VisuBot`,qn=()=>wi()!=="off",Lm=i=>i.replace(/[&<>"]/g,e=>({"&":"&","<":"<",">":">",'"':"""})[e]);function nl(){const i=Yg()?"object":$g()?"flow":wi(),e=(n,a)=>``,t={off:"web_visubot_world_visustruct_hint",on:"web_visubot_world_visubot_hint",object:"web_visuobject_world_hint",flow:"web_visuflow_world_hint"}[i];return`
${e("off","VisuStruct")}${e("on","VisuBot")}${e("object","VisuObject")}${e("flow","VisuFlow")}
- ${Lm(p(t))}`}class wN{constructor(e=Mi){y(this,"element");y(this,"world");y(this,"view");y(this,"loading");y(this,"status");y(this,"stage");y(this,"picker");y(this,"applied",0);y(this,"sent",0);y(this,"liveStatus");y(this,"viewport");y(this,"stopListening");y(this,"realSensors");y(this,"controls",{getBrightness:50,getLoudness:0,getPitch:0,getRoll:0});y(this,"pressTimers",new Map);y(this,"check");y(this,"checking",!1);y(this,"onWorldChange");this.world=new _s(e),this.element=document.createElement("section"),this.element.className="visubot",this.element.innerHTML=`

${p("web_visubot_world")}

${p("web_visubot_world_in_preview")}

${zN()}${IN()}`,this.stage=this.element.querySelector(".visubot-stage"),this.picker=this.element.querySelector(".visubot-worlds"),this.status=this.element.querySelector(".visubot-status"),this.liveStatus=this.element.querySelector(".visubot-live"),this.viewport=this.element.querySelector(".visubot-viewport"),this.stopListening=be.listen(()=>this.updateLive()),this.setupControls(),this.check=this.element.querySelector(".visubot-check"),this.setupCheck(),this.updateLive(),this.updateStatus()}show(){this.loading??(this.loading=ee(async()=>{const{Robot3D:e}=await import("./robot3d-BlWxLlAd.js");return{Robot3D:e}},[],import.meta.url).then(({Robot3D:e})=>{this.view=new e(this.stage),this.view.setWorld(this.world.setup),this.view.place(this.world.pose,this.world.trail),this.view.setLeds(this.world.leds)}).catch(()=>{this.stage.textContent=p("web_visubot_no_3d")}))}restoreViewport(){this.viewport.parentElement!==this.element&&this.liveStatus.after(this.viewport)}setWorlds(e){this.picker.replaceChildren(),this.picker.hidden=e.length<2,e.forEach((t,n)=>{const a=document.createElement("button");a.textContent=p("web_visubot_world_fmt",n+1),a.addEventListener("click",()=>this.useWorld(t,a)),this.picker.append(a)}),this.useWorld(e[0]??Mi,this.picker.firstElementChild)}useWorld(e,t){var n,a,s,r,o;for(const l of this.picker.children)l.classList.toggle("active",l===t);e!==this.world.setup&&(this.world=new _s(e),this.applied=0,this.sent=0,(n=this.view)==null||n.setWorld(e),(a=this.view)==null||a.place(this.world.pose,this.world.trail),(s=this.view)==null||s.setLed(void 0),(r=this.view)==null||r.setScreen(void 0),this.updateStatus(),(o=this.onWorldChange)==null||o.call(this))}reset(){var e,t,n;this.world.reset(),this.applied=0,this.sent=0,this.realSensors=void 0,(e=this.view)==null||e.place(this.world.pose,this.world.trail),(t=this.view)==null||t.setLed(void 0),(n=this.view)==null||n.setScreen(void 0),this.updateStatus()}prepare(e){e.robotSensors={...this.controls,...this.world.sensors()}}setupControls(){for(const e of this.element.querySelectorAll(".visubot-controls input[type=range]")){const t=e.parentElement.querySelector("output"),n=()=>{this.controls[e.name]=Number(e.value),t.textContent=e.value};e.addEventListener("input",n),n()}for(const e of this.element.querySelectorAll(".visubot-controls button[name]"))e.addEventListener("click",()=>{const t=e.name;this.controls[t]=!0,e.classList.add("pressed"),window.clearTimeout(this.pressTimers.get(t)),this.pressTimers.set(t,window.setTimeout(()=>{this.controls[t]=!1,e.classList.remove("pressed")},1e3))})}setupCheck(){for(const e of this.check.querySelectorAll("button[data-py]"))e.addEventListener("click",()=>{const{after:t,wait:n}=e.dataset;be.run(e.dataset.py).then(()=>t?new Promise(a=>setTimeout(a,Number(n))).then(()=>be.run(t)):void 0).catch(a=>this.liveFailed(a))});this.check.addEventListener("toggle",()=>void this.readCheck())}async readCheck(){if(!this.checking){this.checking=!0;try{for(;this.check.open&&be.connected;){for(const e of this.check.querySelectorAll("[data-sensor]")){if(!this.check.open||!be.connected)break;const t=e.dataset.sensor,n=await be.ask(Pt[t].python).catch(()=>{});n!==void 0&&(e.textContent=typeof Pt[t].simulated=="boolean"?n===!0||typeof n=="number"&&n!==0?"✓":"–":String(typeof n=="number"?Math.round(n*10)/10:n))}await new Promise(e=>setTimeout(e,200))}}finally{this.checking=!1}}}get live(){return be.connected}async prepareLive(e,t=[]){const n={};for(const a of new Set(["getDistance","getLine",...t])){const s=await be.ask(Pt[a].python);typeof Pt[a].simulated=="boolean"?n[a]=s===!0||typeof s=="number"&&s!==0:typeof Pt[a].simulated=="string"?n[a]=typeof s=="string"?s:String(Pt[a].simulated):n[a]=typeof s=="number"?a==="getDistance"?Math.round(s):s:0}this.realSensors=n,e.robotSensors={...this.controls,...this.world.sensors(),...n}}async drive(e){for(;this.sentsetTimeout(n,t.args[0]))}}liveFailed(e){be.disconnect(e instanceof Error?e.message:String(e))}updateLive(){this.liveStatus.textContent=tp(),this.liveStatus.classList.toggle("connected",be.connected),this.check.hidden=!be.connected,be.connected||(this.check.open=!1),this.updateStatus()}follow(e,t){var a,s,r,o;for(;this.appliedl!==0);this.world.tick(z0),n&&((o=this.view)==null||o.moveTo(this.world.pose,this.world.trail,t)),this.updateStatus()}dispose(){var e;this.stopListening();for(const t of this.pressTimers.values())window.clearTimeout(t);(e=this.view)==null||e.dispose(),this.view=void 0,this.loading=void 0}updateStatus(){const e=this.world.lineState().toString(2).padStart(4,"0"),t=[`${p("web_visubot_distance")}: ${this.world.distance()} cm`,`${p("web_visubot_line")}: ${e}`];this.world.bumps>0&&t.push(`⚠︎ ${p("web_visubot_bumps")}: ${this.world.bumps}`),this.world.screen!==void 0&&t.push(`📺 ${this.world.screen}`),this.realSensors&&be.connected&&t.push(`🤖 ${p("web_visubot_distance")}: ${this.realSensors.getDistance} cm · ${p("web_visubot_line")}: ${Number(this.realSensors.getLine).toString(2).padStart(4,"0")}`),this.status.textContent=t.join(" · ")}}let ni;function ep(i,e){try{ni??(ni=new AudioContext);const t=ni.createOscillator(),n=ni.createGain();t.type="square",t.frequency.value=Math.max(20,Math.min(2e4,i)),n.gain.value=.05,t.connect(n).connect(ni.destination);const a=ni.currentTime+Math.min(Math.max(e,0),5e3)/1e3;t.start(),t.stop(a)}catch{}}function zN(){const i=(t,n,a,s,r)=>``,e=(t,n,a)=>``;return`
🎛 ${p("web_visubot_controls")} + ${Lm(p(t))}`}class SF{constructor(e=Mi){y(this,"element");y(this,"world");y(this,"view");y(this,"loading");y(this,"status");y(this,"stage");y(this,"picker");y(this,"applied",0);y(this,"sent",0);y(this,"liveStatus");y(this,"viewport");y(this,"stopListening");y(this,"realSensors");y(this,"controls",{getBrightness:50,getLoudness:0,getPitch:0,getRoll:0});y(this,"pressTimers",new Map);y(this,"check");y(this,"checking",!1);y(this,"onWorldChange");this.world=new _s(e),this.element=document.createElement("section"),this.element.className="visubot",this.element.innerHTML=`

${p("web_visubot_world")}

${p("web_visubot_world_in_preview")}

${TF()}${_F()}`,this.stage=this.element.querySelector(".visubot-stage"),this.picker=this.element.querySelector(".visubot-worlds"),this.status=this.element.querySelector(".visubot-status"),this.liveStatus=this.element.querySelector(".visubot-live"),this.viewport=this.element.querySelector(".visubot-viewport"),this.stopListening=be.listen(()=>this.updateLive()),this.setupControls(),this.check=this.element.querySelector(".visubot-check"),this.setupCheck(),this.updateLive(),this.updateStatus()}show(){this.loading??(this.loading=ee(async()=>{const{Robot3D:e}=await import("./robot3d-YfqH2eRc.js");return{Robot3D:e}},[],import.meta.url).then(({Robot3D:e})=>{this.view=new e(this.stage),this.view.setWorld(this.world.setup),this.view.place(this.world.pose,this.world.trail),this.view.setLeds(this.world.leds)}).catch(()=>{this.stage.textContent=p("web_visubot_no_3d")}))}restoreViewport(){this.viewport.parentElement!==this.element&&this.liveStatus.after(this.viewport)}setWorlds(e){this.picker.replaceChildren(),this.picker.hidden=e.length<2,e.forEach((t,n)=>{const a=document.createElement("button");a.textContent=p("web_visubot_world_fmt",n+1),a.addEventListener("click",()=>this.useWorld(t,a)),this.picker.append(a)}),this.useWorld(e[0]??Mi,this.picker.firstElementChild)}useWorld(e,t){var n,a,s,r,o;for(const l of this.picker.children)l.classList.toggle("active",l===t);e!==this.world.setup&&(this.world=new _s(e),this.applied=0,this.sent=0,(n=this.view)==null||n.setWorld(e),(a=this.view)==null||a.place(this.world.pose,this.world.trail),(s=this.view)==null||s.setLed(void 0),(r=this.view)==null||r.setScreen(void 0),this.updateStatus(),(o=this.onWorldChange)==null||o.call(this))}reset(){var e,t,n;this.world.reset(),this.applied=0,this.sent=0,this.realSensors=void 0,(e=this.view)==null||e.place(this.world.pose,this.world.trail),(t=this.view)==null||t.setLed(void 0),(n=this.view)==null||n.setScreen(void 0),this.updateStatus()}prepare(e){e.robotSensors={...this.controls,...this.world.sensors()}}setupControls(){for(const e of this.element.querySelectorAll(".visubot-controls input[type=range]")){const t=e.parentElement.querySelector("output"),n=()=>{this.controls[e.name]=Number(e.value),t.textContent=e.value};e.addEventListener("input",n),n()}for(const e of this.element.querySelectorAll(".visubot-controls button[name]"))e.addEventListener("click",()=>{const t=e.name;this.controls[t]=!0,e.classList.add("pressed"),window.clearTimeout(this.pressTimers.get(t)),this.pressTimers.set(t,window.setTimeout(()=>{this.controls[t]=!1,e.classList.remove("pressed")},1e3))})}setupCheck(){for(const e of this.check.querySelectorAll("button[data-py]"))e.addEventListener("click",()=>{const{after:t,wait:n}=e.dataset;be.run(e.dataset.py).then(()=>t?new Promise(a=>setTimeout(a,Number(n))).then(()=>be.run(t)):void 0).catch(a=>this.liveFailed(a))});this.check.addEventListener("toggle",()=>void this.readCheck())}async readCheck(){if(!this.checking){this.checking=!0;try{for(;this.check.open&&be.connected;){for(const e of this.check.querySelectorAll("[data-sensor]")){if(!this.check.open||!be.connected)break;const t=e.dataset.sensor,n=await be.ask(Dt[t].python).catch(()=>{});n!==void 0&&(e.textContent=typeof Dt[t].simulated=="boolean"?n===!0||typeof n=="number"&&n!==0?"✓":"–":String(typeof n=="number"?Math.round(n*10)/10:n))}await new Promise(e=>setTimeout(e,200))}}finally{this.checking=!1}}}get live(){return be.connected}async prepareLive(e,t=[]){const n={};for(const a of new Set(["getDistance","getLine",...t])){const s=await be.ask(Dt[a].python);typeof Dt[a].simulated=="boolean"?n[a]=s===!0||typeof s=="number"&&s!==0:typeof Dt[a].simulated=="string"?n[a]=typeof s=="string"?s:String(Dt[a].simulated):n[a]=typeof s=="number"?a==="getDistance"?Math.round(s):s:0}this.realSensors=n,e.robotSensors={...this.controls,...this.world.sensors(),...n}}async drive(e){for(;this.sentsetTimeout(n,t.args[0]))}}liveFailed(e){be.disconnect(e instanceof Error?e.message:String(e))}updateLive(){this.liveStatus.textContent=tp(),this.liveStatus.classList.toggle("connected",be.connected),this.check.hidden=!be.connected,be.connected||(this.check.open=!1),this.updateStatus()}follow(e,t){var a,s,r,o;for(;this.appliedl!==0);this.world.tick(z0),n&&((o=this.view)==null||o.moveTo(this.world.pose,this.world.trail,t)),this.updateStatus()}dispose(){var e;this.stopListening();for(const t of this.pressTimers.values())window.clearTimeout(t);(e=this.view)==null||e.dispose(),this.view=void 0,this.loading=void 0}updateStatus(){const e=this.world.lineState().toString(2).padStart(4,"0"),t=[`${p("web_visubot_distance")}: ${this.world.distance()} cm`,`${p("web_visubot_line")}: ${e}`];this.world.bumps>0&&t.push(`⚠︎ ${p("web_visubot_bumps")}: ${this.world.bumps}`),this.world.screen!==void 0&&t.push(`📺 ${this.world.screen}`),this.realSensors&&be.connected&&t.push(`🤖 ${p("web_visubot_distance")}: ${this.realSensors.getDistance} cm · ${p("web_visubot_line")}: ${Number(this.realSensors.getLine).toString(2).padStart(4,"0")}`),this.status.textContent=t.join(" · ")}}let ni;function ep(i,e){try{ni??(ni=new AudioContext);const t=ni.createOscillator(),n=ni.createGain();t.type="square",t.frequency.value=Math.max(20,Math.min(2e4,i)),n.gain.value=.05,t.connect(n).connect(ni.destination);const a=ni.currentTime+Math.min(Math.max(e,0),5e3)/1e3;t.start(),t.stop(a)}catch{}}function TF(){const i=(t,n,a,s,r)=>``,e=(t,n,a)=>``;return`
🎛 ${p("web_visubot_controls")}

${p("web_visubot_controls_hint")}

${i("getBrightness","web_visubot_sensor_brightness",0,100,50)} ${i("getLoudness","web_visubot_sensor_loudness",0,100,0)} @@ -77166,7 +80560,7 @@ ${a}`));this.body.append(s),this.foldReference(s)}}foldReference(e){const t="vis ${e("isJoystickLeft","←","web_visubot_sensor_joy_left")}${e("isJoystickRight","→","web_visubot_sensor_joy_right")} ${e("isShaken",`〰 ${p("web_visubot_shake")}`,"web_visubot_sensor_shake")}
- `}function IN(){const i=a=>a.replace(/"/g,"""),e=(a,s,r,o=1e3)=>``,t="mbot2.EM_stop('ALL')",n=np.map(a=>`${p(a.key)}…`).join("");return``}function _F(){const i=a=>a.replace(/"/g,"""),e=(a,s,r,o=1e3)=>``,t="mbot2.EM_stop('ALL')",n=np.map(a=>`${p(a.key)}…`).join("");return``}function tp(){return be.connecting?p("web_visubot_connecting"):be.connected?`✓ ${p("web_visubot_connected")}`:be.error?`⚠︎ ${p("web_visubot_link_error")}: ${be.error}`:""}async function kN(){if(be.connected||be.connecting)return be.disconnect();try{await be.connect()}catch(i){await be.disconnect(i.name==="NotFoundError"?void 0:i.message)}}const gt=i=>()=>Ce(T.anweisung,{textLines:[i]}),SN=[{key:"web_visubot_el_forward",group:"drive",type:T.anweisung,make:gt("mbot.forward()")},{key:"web_visubot_el_backward",group:"drive",type:T.anweisung,make:gt("mbot.backward()")},{key:"web_visubot_el_right",group:"drive",type:T.anweisung,make:gt("mbot.turnRight()")},{key:"web_visubot_el_left",group:"drive",type:T.anweisung,make:gt("mbot.turnLeft()")},{key:"web_visubot_el_drive",group:"wheels",type:T.anweisung,make:gt("mbot.drive(30, 30)")},{key:"web_visubot_el_stop",group:"wheels",type:T.anweisung,make:gt("mbot.stop()")},{key:"web_visubot_el_led",group:"leds",type:T.anweisung,make:gt("mbot.setLed(255, 0, 0)")},{key:"web_visubot_el_led_off",group:"leds",type:T.anweisung,make:gt("mbot.ledOff()")},{key:"web_visubot_el_led_color",group:"leds",type:T.anweisung,make:gt('mbot.led(0).setColor("grün")')},{key:"web_visubot_el_tone",group:"sound",type:T.anweisung,make:gt("mbot.playTone(440, 300)")},{key:"web_visubot_el_text",group:"screen",type:T.anweisung,make:gt('mbot.showText("Hallo")')},{key:"web_visubot_el_emotion",group:"emotion",type:T.anweisung,make:gt('mbot.emotion("smile")')},{key:"web_visubot_el_wait",group:"wait",type:T.anweisung,make:gt("mbot.pause(100)")},{key:"web_visubot_el_timer",group:"wait",type:T.anweisung,make:gt("mbot.resetTimer()")}];function Wm(i){return{drive:"fahren",wheels:"fahren",leds:"licht",sound:"ton",screen:"anzeige",emotion:"anzeige",wait:"warten"}[i]??"sensor"}const TN={drive:"🚗",wheels:"⚙️",leds:"💡",sound:"🔊",screen:"🖥️",emotion:"😊",wait:"⏱️",distance:"📏",line:"➖",color:"🎨",buttons:"🕹️",light:"🔆",tilt:"📐",timer:"🔋"},np=[{key:"web_visubot_sensor_distance",group:"distance",text:"mbot.getDistance()"},{key:"web_visubot_sensor_line",group:"line",text:"mbot.getLine()"},{key:"web_visubot_sensor_line_left",group:"line",text:"mbot.isLineLeft()"},{key:"web_visubot_sensor_line_right",group:"line",text:"mbot.isLineRight()"},{key:"web_visubot_sensor_color",group:"color",get text(){return`mbot.getColor().equals("${Zh("red")}")`}},{key:"web_visubot_sensor_button_a",group:"buttons",text:"mbot.isButtonA()"},{key:"web_visubot_sensor_button_b",group:"buttons",text:"mbot.isButtonB()"},{key:"web_visubot_sensor_joy_up",group:"buttons",text:"mbot.isJoystickUp()"},{key:"web_visubot_sensor_joy_down",group:"buttons",text:"mbot.isJoystickDown()"},{key:"web_visubot_sensor_joy_left",group:"buttons",text:"mbot.isJoystickLeft()"},{key:"web_visubot_sensor_joy_right",group:"buttons",text:"mbot.isJoystickRight()"},{key:"web_visubot_sensor_brightness",group:"light",text:"mbot.getBrightness()"},{key:"web_visubot_sensor_loudness",group:"light",text:"mbot.getLoudness()"},{key:"web_visubot_sensor_pitch",group:"tilt",text:"mbot.getPitch()"},{key:"web_visubot_sensor_roll",group:"tilt",text:"mbot.getRoll()"},{key:"web_visubot_sensor_shake",group:"tilt",text:"mbot.isShaken()"},{key:"web_visubot_sensor_timer",group:"timer",text:"mbot.getTimer()"},{key:"web_visubot_sensor_battery",group:"timer",text:"mbot.getBattery()"}],wa=()=>typeof window.showDirectoryPicker=="function";class pr{constructor(e){this.handle=e}get name(){return this.handle.name}async list(){const e=[];for await(const t of this.handle.values())t.name.startsWith(".")||e.push({kind:t.kind,name:t.name});return e}async dir(e,t=!1){return new pr(await this.handle.getDirectoryHandle(e,{create:t}))}async read(e){return(await(await this.handle.getFileHandle(e)).getFile()).text()}async write(e,t){const a=await(await this.handle.getFileHandle(e,{create:!0})).createWritable();await a.write(t),await a.close()}async has(e){try{return await this.handle.getFileHandle(e),!0}catch{try{return await this.handle.getDirectoryHandle(e),!0}catch{return!1}}}async remove(e){await this.handle.removeEntry(e,{recursive:!0})}}const _N="visustruct-workspace";function jN(){return new Promise((i,e)=>{const t=indexedDB.open(_N,1);t.onupgradeneeded=()=>{t.result.createObjectStore("files"),t.result.createObjectStore("meta")},t.onsuccess=()=>i(t.result),t.onerror=()=>e(t.error)})}async function Ct(i,e,t){const n=await jN();return new Promise((a,s)=>{const r=t(n.transaction(i,e).objectStore(i));r.onsuccess=()=>a(r.result),r.onerror=()=>s(r.error)})}class C0{constructor(e,t){this.name=e,this.path=t}key(e){return this.path+e}async list(){const e=await Ct("files","readonly",n=>n.getAllKeys()),t=new Map;for(const n of e){if(!n.startsWith(this.path)||n===this.path)continue;const a=n.slice(this.path.length),s=a.indexOf("/"),r=s<0?a:a.slice(0,s);t.has(r)||t.set(r,{kind:s<0?"file":"directory",name:r})}return[...t.values()]}async dir(e,t=!1){const n=this.key(e)+"/";if(!(await Ct("files","readonly",s=>s.count(n))>0)){if(!t)throw new DOMException(e,"NotFoundError");await Ct("files","readwrite",s=>s.put("",n))}return new C0(e,n)}async read(e){const t=await Ct("files","readonly",n=>n.get(this.key(e)));if(typeof t!="string")throw new DOMException(e,"NotFoundError");return t}async write(e,t){await Ct("files","readwrite",n=>n.put(t,this.key(e)))}async has(e){const t=await Ct("files","readonly",a=>a.count(this.key(e))),n=await Ct("files","readonly",a=>a.count(this.key(e)+"/"));return t+n>0}async remove(e){const t=this.key(e);await Ct("files","readwrite",n=>n.delete(t)),await Ct("files","readwrite",n=>n.delete(IDBKeyRange.bound(t+"/",t+"/￿")))}}async function CN(i,e="folder"){const t=await window.showDirectoryPicker({id:e==="folder"?"visustruct-workspace":e,mode:"readwrite"}),n=i&&t.name!==i?await t.getDirectoryHandle(i,{create:!0}):t;return await Ct("meta","readwrite",a=>a.put(n,e)),{kind:"folder",root:new pr(n)}}function Em(){return{kind:"browser",root:new C0("VisuStruct","")}}async function AN(i="folder"){var e;try{const t=await Ct("meta","readonly",a=>a.get(i));if(!t)return;const n=await((e=t.queryPermission)==null?void 0:e.call(t,{mode:"readwrite"}))??"granted";return{handle:t,ready:n==="granted"}}catch{return}}async function Nm(i){var t;return(await((t=i.requestPermission)==null?void 0:t.call(i,{mode:"readwrite"}))??"granted")==="granted"?{kind:"folder",root:new pr(i)}:void 0}async function PN(i="folder"){try{await Ct("meta","readwrite",e=>e.delete(i))}catch{}}const za="learnProgress.json",Ia="lernstand.json",ka="visustruct.files.mode",Fm="visustruct.files.expanded";function DN(i){try{const e=JSON.parse(ip(i)??"[]");return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}catch{return[]}}function ip(i){try{return localStorage.getItem(i)}catch{return null}}function Sa(i,e){try{e===null?localStorage.removeItem(i):localStorage.setItem(i,e)}catch{}}const te=i=>i.replace(/&/g,"&").replace(//g,">").replace(/"/g,""");function Rm(i){return new Promise(e=>{const t=document.createElement("div");t.className="confirm";const n=(i.choices??[]).map(o=>``).join("");t.innerHTML=``;const a=t.querySelector("form"),s=a.querySelector("input"),r=o=>{t.remove(),e(o)};a.addEventListener("submit",o=>{if(o.preventDefault(),!s)return r("");s.value.trim()?r(s.value):s.focus()}),t.addEventListener("click",o=>{var m;const l=o.target,u=(m=l.closest("[data-choice]"))==null?void 0:m.dataset.choice;u!==void 0?r(u):(l===t||l.closest("[data-cancel]"))&&r(void 0)}),t.addEventListener("keydown",o=>o.key==="Escape"&&r(void 0)),document.body.append(t),(s??a.querySelector("[data-cancel]")).focus()})}class BN{constructor(e){y(this,"element");y(this,"body");y(this,"workspace");y(this,"pending");y(this,"expanded",new Set(DN(Fm)));y(this,"rendering",0);y(this,"progressWorkspace");y(this,"hadWorkspace",!1);y(this,"progressTimer");this.host=e,this.element=document.createElement("aside"),this.element.className="files",this.build(),xe.onChange(()=>this.progressChanged()),this.restore()}rememberExpanded(){Sa(Fm,JSON.stringify([...this.expanded]))}get ready(){return!!this.workspace}build(){this.element.innerHTML=` + `;const a=t.querySelector("form"),s=a.querySelector("input"),r=o=>{t.remove(),e(o)};a.addEventListener("submit",o=>{if(o.preventDefault(),!s)return r("");s.value.trim()?r(s.value):s.focus()}),t.addEventListener("click",o=>{var m;const l=o.target,u=(m=l.closest("[data-choice]"))==null?void 0:m.dataset.choice;u!==void 0?r(u):(l===t||l.closest("[data-cancel]"))&&r(void 0)}),t.addEventListener("keydown",o=>o.key==="Escape"&&r(void 0)),document.body.append(t),(s??a.querySelector("[data-cancel]")).focus()})}class LF{constructor(e){y(this,"element");y(this,"body");y(this,"workspace");y(this,"pending");y(this,"expanded",new Set(ZF(Fm)));y(this,"rendering",0);y(this,"progressWorkspace");y(this,"hadWorkspace",!1);y(this,"progressTimer");this.host=e,this.element=document.createElement("aside"),this.element.className="files",this.build(),xe.onChange(()=>this.progressChanged()),this.restore()}rememberExpanded(){Sa(Fm,JSON.stringify([...this.expanded]))}get ready(){return!!this.workspace}build(){this.element.innerHTML=`

${te(p("web_files_title"))}

- +
- `,this.body=this.element.querySelector(".files-body");const e=(t,n)=>this.element.querySelector(`[data-files=${t}]`).addEventListener("click",n);e("hide",()=>this.host.hide()),e("new-folder",()=>void this.newFolder()),e("switch",()=>void this.switchWorkspace()),this.body.addEventListener("click",t=>void this.onTreeClick(t)),this.render()}async restore(){if(ip(ka)==="browser")this.workspace=Em();else if(wa()){const e=await AN();e!=null&&e.ready?this.workspace=await Nm(e.handle):this.pending=e==null?void 0:e.handle}await this.render(),this.workspace||this.startDialog()}async startDialog(){var r;const e=p("web_learn_start_folder"),t=(o,l,u=!1,m)=>`${m?`

${te(m)}

`:""}`,n=wa()?[this.pending?t("reconnect",`${me.open} ${te(p("web_learn_start_continue_fmt",this.pending.name))}`,!0):"",t("pick",`${me.open} ${te(p("web_learn_start_open"))}`,!this.pending),t("create",`${me.newFolder} ${te(p("web_learn_start_create_fmt",e))}`,!1,p("web_learn_start_create_hint"))]:[t("browser",te(p("web_files_browser")),!0,p("web_files_browser_hint"))],a=document.createElement("div");a.className="confirm",a.innerHTML=``;const n=t.querySelector(".mbot-upload-status"),a=t.querySelector("progress"),s=t.querySelector("[data-action=upload-start]");let r=!1;const o=()=>!r&&t.close();t.querySelector("[data-action=upload-close]").addEventListener("click",o),t.addEventListener("cancel",u=>r&&u.preventDefault()),t.addEventListener("click",u=>u.target===t&&o()),t.addEventListener("close",()=>t.remove());const l=dQ(i,e,rb(),p("web_visubot_upload_label"));"error"in l&&(n.textContent=`⚠︎ ${p(`web_visubot_upload_error_${l.error}`)}`,s.hidden=!0),s.addEventListener("click",async()=>{if("source"in l){r=!0,s.disabled=!0,a.hidden=!1,a.value=0,n.textContent=p("web_visubot_upload_busy");try{await be.upload(l.source,(u,m)=>a.value=u/m),a.value=1,n.textContent=`✓ ${p("web_visubot_upload_done")}`,n.classList.add("done")}catch(u){const m=u;n.textContent=m.name==="NotFoundError"?"":`⚠︎ ${p("web_visubot_upload_failed")} (${m.message})`,a.hidden=!0,await be.disconnect(m.name==="NotFoundError"?void 0:m.message).catch(()=>{})}finally{r=!1,s.disabled=!1}}}),document.body.append(t),t.showModal()}const Ed=[T.verzweigung,T.whileSchleife,T.doUntilSchleife,T.anweisung],Nd=()=>[{description:p("web_file_type"),accept:{"application/xml":[".visustruct",".strk"]}}],wo=i=>p(`element_${T[i]}`),fQ={[T.verzweigung]:"age >= 18",[T.whileSchleife]:"i < 10",[T.doUntilSchleife]:"again == 1",[T.fallauswahl]:"day"},bQ={statement:'int number = 5 | double x = 1.5 | String text = "Your text" | boolean ok = true | const double PI = 3.14',input:'input: int age "Enter age" | input: double price "Enter price" | input: String name "Enter name"',output:'output: number | output: "Your text" | output: "Your age: " + age'};function Fd(i){switch(i.type){case T.anweisung:{const e=ms(i.textLines.join(` -`));return e==="input"?"input:":e==="output"?"output:":void 0}case T.verzweigung:return"if";case T.whileSchleife:case T.doUntilSchleife:return"while";case T.fallauswahl:return"switch";default:return}}function xQ(i){switch(i.type){case T.anweisung:{const e=ms(i.textLines.join(` -`));return e==="input"?'int age "Enter age"':e==="output"?'"Your age: " + age':p("inspector_placeholder_statement")}case T.verzweigung:case T.whileSchleife:case T.doUntilSchleife:case T.endlosschleife:return p("inspector_placeholder_condition");case T.fallauswahl:return p("inspector_placeholder_selector");case T.aufruf:return p("inspector_placeholder_call");case T.aussprung:return p("inspector_placeholder_break");default:return""}}function ge(i,e={},...t){const n=document.createElement(i);for(const[a,s]of Object.entries(e))n.setAttribute(a,s);return n.append(...t),n}const vQ=760,Rd=[{value:1,label:"settings_ui_scale_small"},{value:1.22,label:"settings_ui_scale_medium"},{value:1.5,label:"settings_ui_scale_large"},{value:1.82,label:"settings_ui_scale_extra_large"}],zo=[{value:14,label:"settings_ui_scale_small"},{value:17,label:"settings_ui_scale_medium"},{value:20,label:"settings_ui_scale_large"},{value:24,label:"settings_ui_scale_extra_large"}];function Jd(i){document.documentElement.style.setProperty("--code-size",`${i}px`)}const yQ=/Mac|iPhone|iPad/.test(navigator.platform);function Va(i){return s3(qn()?"visubot":"visustruct",o1(),i)}function Rt(i,e,t,n){const a=n?`${e} (${n})`:e;return``}function kn(i,e=!1){return yQ?`${e?"⇧":""}⌘${i}`:[p("web_key_ctrl"),...e?[p("web_key_shift")]:[],i].join("+")}const W=_Q,Gd="visustruct.ui.scale.canvas",Hd="visustruct.ui.scale.code",Vd="visustruct.learn.open",qd="visustruct.files.open",Qd="visustruct.files.width",Ud="visustruct.learn.width",Yd="visustruct.live.open",wQ="visustruct.live.width",$d="visustruct.robotPreview.open",Kd="visustruct.codeMain",Xd="visustruct.palette.width",zQ="visustruct.editor.width",eh="visustruct.visubot.collapsedGroups",th="visustruct.robotPreview.stacked",nh="visustruct.robotPreview.width",ih="visustruct.robotPreview.height",ah="visustruct.editor.hidden",Io="visustruct.palette.compact",sh="visustruct.palette.hidden",IQ='',kQ=80;class SQ{constructor(e){y(this,"tabs",[]);y(this,"tabIndex",0);y(this,"nextTabSerial",1);y(this,"clipboard");y(this,"zoom",1);y(this,"simulating",!1);y(this,"exportButton");y(this,"closeExport");y(this,"learn");y(this,"shell");y(this,"railButton");y(this,"liveRailButton");y(this,"editorRailButton");y(this,"topbar",ge("div",{class:"topbar"}));y(this,"bottombar",ge("div",{class:"bottombar"}));y(this,"editorHidden",!1);y(this,"setPaletteHidden");y(this,"files");y(this,"filesRailButton");y(this,"closeSettings");y(this,"escapeSettings");y(this,"exerciseSaveTimer");y(this,"paletteObserver");y(this,"resizeObserver");y(this,"renderedHostSize",{width:-1,height:-1});y(this,"simPath");y(this,"sim");y(this,"simButton");y(this,"pseudocodeBox");y(this,"coding",!1);y(this,"code");y(this,"codeButton");y(this,"liveCoding",!1);y(this,"codeTyping");y(this,"live");y(this,"preview",new Xq);y(this,"previewOpen",!1);y(this,"previewOpenedForSim",!1);y(this,"codeMain",!1);y(this,"previewStacked",!1);y(this,"previewResizer");y(this,"measure",z3());y(this,"metrics",I3());y(this,"engine",new xh(this.metrics,this.measure));y(this,"renderer",new zh(this.metrics,this.measure));y(this,"layout");y(this,"flat",[]);y(this,"canvasHost");y(this,"svg");y(this,"overlay");y(this,"inspector");y(this,"captionInput");y(this,"undoButton");y(this,"redoButton");y(this,"deleteButton");y(this,"statusLine");y(this,"drag");y(this,"downloads",null);y(this,"inViewer","claude"in window);y(this,"visuBot");y(this,"stopLinkListener");y(this,"tabStrip");this.root=e,this.tabs.push(this.makeTab());const t=new URLSearchParams(location.search);t.has("visubot")?ns("on"):t.has("visustruct")&&ns("off"),xm(wi()),this.learn=new bN(this.learnHost());const n=t.get("lektion")??void 0;n&&this.learn.showLesson(n),this.shell=document.createElement("div"),this.shell.className="shell",e.replaceWith(this.shell),this.live=new $q(()=>this.setLiveCoding(!1),u=>{this.selected=u,this.render()},(u,m)=>this.commitFromCode(u,m),u=>u?this.redo():this.undo()),this.live.onRobotRun=u=>this.runRobot(u),this.live.onSwap=()=>this.setCodeMain(!this.codeMain),this.live.onRename=()=>this.codeTyping=void 0,this.live.onReference=()=>{this.learn.showReference(),this.setLearning(!0)},this.files=new BN({open:(u,m,c)=>this.openFromWorkspace(u,m,c),hide:()=>this.setFilesOpen(!1),message:u=>this.showMessage(u),progressLoaded:()=>{this.learn.restore(),n&&this.learn.showLesson(n)},chooseWorld:u=>this.chooseWorld(u,!1)});const a=ge("div",{class:"columns"});a.append(this.filesRail(),this.files.element,this.panelResizer(this.files.element,"files-resizer",Qd,p("web_files_resize"),1),this.learnRail(),this.learn.element,this.learnResizer(),this.editorRail(),e,this.panelResizer(e,"editor-resizer",zQ,p("web_editor_resize"),()=>this.codeMain?-1:1,()=>this.live.element),this.liveResizer(),this.live.element,this.liveRail(),this.previewResizer=this.panelResizer(this.preview.element,"preview-resizer",nh,p("web_visubot_preview_resize"),-1),this.preview.element,this.preview.rail),this.setupPreview(),this.shell.append(this.topbar,a,this.bottombar);const s=nt(Vd),r=new URLSearchParams(location.search).has("learn")||n!==void 0;this.showWorldInURL(),this.setLearning(r||(s===null?window.innerWidth>1100:s==="1"),r),this.setFilesOpen(nt(qd)==="1");const o=Number(nt(Gd));Rd.some(u=>u.value===o)&&(this.zoom=o),this.setLiveCoding(nt(Yd)==="1"),this.setEditorHidden(nt(ah)==="1"),this.buildUI(),this.setCodeMain(nt(Kd)==="1"),this.render(),window.addEventListener("pointermove",u=>this.onPointerMove(u)),window.addEventListener("pointerup",u=>this.onPointerUp(u)),window.addEventListener("pointercancel",()=>this.endDrag()),window.addEventListener("keydown",u=>this.onKeyDown(u)),window.addEventListener("beforeunload",u=>{(this.tabs.some(m=>m.dirty&&!m.exerciseId)||!this.files.ready&&xe.hasContent())&&u.preventDefault()}),this.setupFileDrop();const l=window.claude;typeof(l==null?void 0:l.use)=="function"&&l.use("downloads").then(u=>this.downloads=u).catch(()=>{})}get tab(){return this.tabs[this.tabIndex]}get doc(){return this.tab.doc}set doc(e){this.tab.doc=e}get fileName(){return this.tab.fileName??`${hn(this.tab)}.visustruct`}get fileHandle(){return this.tab.fileHandle}set fileHandle(e){this.tab.fileHandle=e}get dirty(){return this.tab.dirty}set dirty(e){this.tab.dirty=e}get undoStack(){return this.tab.undoStack}get redoStack(){return this.tab.redoStack}get selected(){return this.tab.selected}set selected(e){this.tab.selected=e}buildUI(){var X,he,ae,M;this.root.className="app",this.root.innerHTML=` + `;const n=t.querySelector(".mbot-upload-status"),a=t.querySelector("progress"),s=t.querySelector("[data-action=upload-start]");let r=!1;const o=()=>!r&&t.close();t.querySelector("[data-action=upload-close]").addEventListener("click",o),t.addEventListener("cancel",u=>r&&u.preventDefault()),t.addEventListener("click",u=>u.target===t&&o()),t.addEventListener("close",()=>t.remove());const l=fU(i,e,rb(),p("web_visubot_upload_label"));"error"in l&&(n.textContent=`⚠︎ ${p(`web_visubot_upload_error_${l.error}`)}`,s.hidden=!0),s.addEventListener("click",async()=>{if("source"in l){r=!0,s.disabled=!0,a.hidden=!1,a.value=0,n.textContent=p("web_visubot_upload_busy");try{await be.upload(l.source,(u,m)=>a.value=u/m),a.value=1,n.textContent=`✓ ${p("web_visubot_upload_done")}`,n.classList.add("done")}catch(u){const m=u;n.textContent=m.name==="NotFoundError"?"":`⚠︎ ${p("web_visubot_upload_failed")} (${m.message})`,a.hidden=!0,await be.disconnect(m.name==="NotFoundError"?void 0:m.message).catch(()=>{})}finally{r=!1,s.disabled=!1}}}),document.body.append(t),t.showModal()}const Ed=[T.verzweigung,T.whileSchleife,T.doUntilSchleife,T.anweisung],Nd=()=>[{description:p("web_file_type"),accept:{"application/xml":[".visustruct",".strk"]}}],wo=i=>p(`element_${T[i]}`),yU={[T.verzweigung]:"age >= 18",[T.whileSchleife]:"i < 10",[T.doUntilSchleife]:"again == 1",[T.fallauswahl]:"day"},wU={statement:'int number = 5 | double x = 1.5 | String text = "Your text" | boolean ok = true | const double PI = 3.14',input:'input: int age "Enter age" | input: double price "Enter price" | input: String name "Enter name"',output:'output: number | output: "Your text" | output: "Your age: " + age'};function Fd(i){switch(i.type){case T.anweisung:{const e=ms(i.textLines.join(` +`));return e==="input"?"input:":e==="output"?"output:":void 0}case T.verzweigung:return"if";case T.whileSchleife:case T.doUntilSchleife:return"while";case T.fallauswahl:return"switch";default:return}}function zU(i){switch(i.type){case T.anweisung:{const e=ms(i.textLines.join(` +`));return e==="input"?'int age "Enter age"':e==="output"?'"Your age: " + age':p("inspector_placeholder_statement")}case T.verzweigung:case T.whileSchleife:case T.doUntilSchleife:case T.endlosschleife:return p("inspector_placeholder_condition");case T.fallauswahl:return p("inspector_placeholder_selector");case T.aufruf:return p("inspector_placeholder_call");case T.aussprung:return p("inspector_placeholder_break");default:return""}}function ge(i,e={},...t){const n=document.createElement(i);for(const[a,s]of Object.entries(e))n.setAttribute(a,s);return n.append(...t),n}const IU=760,Rd=[{value:1,label:"settings_ui_scale_small"},{value:1.22,label:"settings_ui_scale_medium"},{value:1.5,label:"settings_ui_scale_large"},{value:1.82,label:"settings_ui_scale_extra_large"}],zo=[{value:14,label:"settings_ui_scale_small"},{value:17,label:"settings_ui_scale_medium"},{value:20,label:"settings_ui_scale_large"},{value:24,label:"settings_ui_scale_extra_large"}];function Jd(i){document.documentElement.style.setProperty("--code-size",`${i}px`)}const kU=/Mac|iPhone|iPad/.test(navigator.platform);function Va(i){return s3(qn()?"visubot":"visustruct",o1(),i)}function Rt(i,e,t,n){const a=n?`${e} (${n})`:e;return``}function kn(i,e=!1){return kU?`${e?"⇧":""}⌘${i}`:[p("web_key_ctrl"),...e?[p("web_key_shift")]:[],i].join("+")}const W=DU,Gd="visustruct.ui.scale.canvas",Hd="visustruct.ui.scale.code",Vd="visustruct.learn.open",qd="visustruct.files.open",Qd="visustruct.files.width",Ud="visustruct.learn.width",Yd="visustruct.live.open",SU="visustruct.live.width",$d="visustruct.robotPreview.open",Kd="visustruct.codeMain",Xd="visustruct.palette.width",TU="visustruct.editor.width",eh="visustruct.visubot.collapsedGroups",th="visustruct.robotPreview.stacked",nh="visustruct.robotPreview.width",ih="visustruct.robotPreview.height",ah="visustruct.editor.hidden",Io="visustruct.palette.compact",sh="visustruct.palette.hidden",_U='',jU=80;class AU{constructor(e){y(this,"tabs",[]);y(this,"tabIndex",0);y(this,"nextTabSerial",1);y(this,"clipboard");y(this,"zoom",1);y(this,"simulating",!1);y(this,"exportButton");y(this,"closeExport");y(this,"learn");y(this,"shell");y(this,"railButton");y(this,"liveRailButton");y(this,"editorRailButton");y(this,"topbar",ge("div",{class:"topbar"}));y(this,"bottombar",ge("div",{class:"bottombar"}));y(this,"editorHidden",!1);y(this,"setPaletteHidden");y(this,"files");y(this,"filesRailButton");y(this,"closeSettings");y(this,"escapeSettings");y(this,"exerciseSaveTimer");y(this,"paletteObserver");y(this,"resizeObserver");y(this,"renderedHostSize",{width:-1,height:-1});y(this,"simPath");y(this,"sim");y(this,"simButton");y(this,"pseudocodeBox");y(this,"coding",!1);y(this,"code");y(this,"codeButton");y(this,"liveCoding",!1);y(this,"codeTyping");y(this,"live");y(this,"preview",new iU);y(this,"previewOpen",!1);y(this,"previewOpenedForSim",!1);y(this,"codeMain",!1);y(this,"previewStacked",!1);y(this,"previewResizer");y(this,"measure",z3());y(this,"metrics",I3());y(this,"engine",new xh(this.metrics,this.measure));y(this,"renderer",new zh(this.metrics,this.measure));y(this,"layout");y(this,"flat",[]);y(this,"canvasHost");y(this,"svg");y(this,"overlay");y(this,"inspector");y(this,"captionInput");y(this,"undoButton");y(this,"redoButton");y(this,"deleteButton");y(this,"statusLine");y(this,"drag");y(this,"downloads",null);y(this,"inViewer","claude"in window);y(this,"visuBot");y(this,"stopLinkListener");y(this,"tabStrip");this.root=e,this.tabs.push(this.makeTab());const t=new URLSearchParams(location.search);t.has("visubot")?ns("on"):t.has("visustruct")&&ns("off"),xm(wi()),this.learn=new wF(this.learnHost());const n=t.get("lektion")??void 0;n&&this.learn.showLesson(n),this.shell=document.createElement("div"),this.shell.className="shell",e.replaceWith(this.shell),this.live=new tU(()=>this.setLiveCoding(!1),u=>{this.selected=u,this.render()},(u,m)=>this.commitFromCode(u,m),u=>u?this.redo():this.undo()),this.live.onRobotRun=u=>this.runRobot(u),this.live.onSwap=()=>this.setCodeMain(!this.codeMain),this.live.onRename=()=>this.codeTyping=void 0,this.live.onReference=()=>{this.learn.showReference(),this.setLearning(!0)},this.files=new LF({open:(u,m,c)=>this.openFromWorkspace(u,m,c),hide:()=>this.setFilesOpen(!1),message:u=>this.showMessage(u),progressLoaded:()=>{this.learn.restore(),n&&this.learn.showLesson(n)},chooseWorld:u=>this.chooseWorld(u,!1)});const a=ge("div",{class:"columns"});a.append(this.filesRail(),this.files.element,this.panelResizer(this.files.element,"files-resizer",Qd,p("web_files_resize"),1),this.learnRail(),this.learn.element,this.learnResizer(),this.editorRail(),e,this.panelResizer(e,"editor-resizer",TU,p("web_editor_resize"),()=>this.codeMain?-1:1,()=>this.live.element),this.liveResizer(),this.live.element,this.liveRail(),this.previewResizer=this.panelResizer(this.preview.element,"preview-resizer",nh,p("web_visubot_preview_resize"),-1),this.preview.element,this.preview.rail),this.setupPreview(),this.shell.append(this.topbar,a,this.bottombar);const s=nt(Vd),r=new URLSearchParams(location.search).has("learn")||n!==void 0;this.showWorldInURL(),this.setLearning(r||(s===null?window.innerWidth>1100:s==="1"),r),this.setFilesOpen(nt(qd)==="1");const o=Number(nt(Gd));Rd.some(u=>u.value===o)&&(this.zoom=o),this.setLiveCoding(nt(Yd)==="1"),this.setEditorHidden(nt(ah)==="1"),this.buildUI(),this.setCodeMain(nt(Kd)==="1"),this.render(),window.addEventListener("pointermove",u=>this.onPointerMove(u)),window.addEventListener("pointerup",u=>this.onPointerUp(u)),window.addEventListener("pointercancel",()=>this.endDrag()),window.addEventListener("keydown",u=>this.onKeyDown(u)),window.addEventListener("beforeunload",u=>{(this.tabs.some(m=>m.dirty&&!m.exerciseId)||!this.files.ready&&xe.hasContent())&&u.preventDefault()}),this.setupFileDrop();const l=window.claude;typeof(l==null?void 0:l.use)=="function"&&l.use("downloads").then(u=>this.downloads=u).catch(()=>{})}get tab(){return this.tabs[this.tabIndex]}get doc(){return this.tab.doc}set doc(e){this.tab.doc=e}get fileName(){return this.tab.fileName??`${hn(this.tab)}.visustruct`}get fileHandle(){return this.tab.fileHandle}set fileHandle(e){this.tab.fileHandle=e}get dirty(){return this.tab.dirty}set dirty(e){this.tab.dirty=e}get undoStack(){return this.tab.undoStack}get redoStack(){return this.tab.redoStack}get selected(){return this.tab.selected}set selected(e){this.tab.selected=e}buildUI(){var X,he,ae,M;this.root.className="app",this.root.innerHTML=`
- ${qn()?yN:'VisuStruct'} ${W(p("web_brand_suffix"))} + ${qn()?kF:'VisuStruct'} ${W(p("web_brand_suffix"))}
${Rt("new",p("toolbar_new"),me.newFile)} ${Rt("open",p("menu_open"),me.open,kn("O"))} ${Rt("save",p("menu_save"),me.save,kn("S"))}
- +
- +